Compare commits

...

117 Commits

Author SHA1 Message Date
Alexey Sedunov
d17abfcfa1 Fix compilation 2017-07-29 22:47:44 +03:00
Alexey Sedunov
39da04e956 Revert: Parcelable: Download Robolectric artifacts in order to use them in tests 2017-07-29 21:14:23 +03:00
Alexey Sedunov
de66cf857a Android Extensions: Drop Parcelable support as it's not available in 162 2017-07-28 19:52:07 +03:00
Alexey Sedunov
181c3bd8ff Android Extensions: Drop LayoutContainer as it's not available in 162 2017-07-28 19:52:06 +03:00
Alexey Sedunov
f0996e39c8 Misc: Revert usage of newer API 2017-07-28 19:52:04 +03:00
Vyacheslav Gerasimov
bdc201314c Fix guava version 2017-07-28 19:52:03 +03:00
Vyacheslav Gerasimov
d40280ad68 Revert "Replace CompilingEvaluatorUtils methods with ClassLoadingUtils"
This reverts commit 2aa1b19ec9.
2017-07-28 19:52:02 +03:00
Dmitry Jemerov
7a6c21b354 Compilation fixes for 162 2017-07-28 19:52:01 +03:00
Vyacheslav Gerasimov
80e0cf5452 Fix tests compilation 2017-07-28 19:52:00 +03:00
Vyacheslav Gerasimov
8d9f15feb7 Fix compilation ResourceReferenceAnnotatorUtil 2017-07-28 19:51:59 +03:00
Vyacheslav Gerasimov
8dc273446f Fix compilation AndroidResourceReferenceAnnotator 2017-07-28 19:51:58 +03:00
Mikhael Bogdanov
9317e30af1 Use ASM5 2017-07-28 19:51:57 +03:00
Nikolay Krasko
1b675c9f3a Specify runInEdtAndWait() call in 162 branch 2017-07-28 19:51:56 +03:00
Ilya Gorbunov
f828ba12e7 Reimplement JpsBuildTestCase.buildAllModules missing in IDEA 162 2017-07-28 19:51:55 +03:00
Alexey Sedunov
b6dac92f6a Fix convert { -> } to :: and back infrastructure for branch 162
Both relevant inspections made INFO and disabled by default
(there is no INFORMATION severity in this branch)
Both intentions enabled
2017-07-28 19:51:54 +03:00
Alexey Sedunov
34b07847b9 Fix compilation and failing Move tests 2017-07-28 19:51:53 +03:00
Alexey Andreev
2fc2456c56 Fix for "Introduce inspection "replace arrayOf with literal"" 2017-07-28 19:51:52 +03:00
Vyacheslav Gerasimov
c815441f11 Revert "Initial implementation of rainbow highlighting for Kotlin"
This reverts commit 5315f4d9da.
2017-07-28 19:51:51 +03:00
Vyacheslav Gerasimov
aaf857b58e Fix guava version 2017-07-28 19:51:50 +03:00
Vyacheslav Gerasimov
807d33eb70 Revert "Add codegen tests with substituted bytecode version (1.8->1.9)"
This reverts commit 46cdf0215e.
2017-07-28 19:51:48 +03:00
Vyacheslav Gerasimov
9649751018 Fix compilation testUtils 2017-07-28 19:51:47 +03:00
Vyacheslav Gerasimov
f199697259 Fix compilation AbstractAndroidQuickFixMultiFileTest 2017-07-28 19:51:46 +03:00
Vyacheslav Gerasimov
770f724018 Fix compilation after rebase 2017-07-28 19:51:45 +03:00
Vyacheslav Gerasimov
a86f31e3f6 Fix compilation KotlinCliJavaFileManagerImpl 2017-07-28 19:51:44 +03:00
Vyacheslav Gerasimov
79ce732944 Fix compilation KotlinInlineFunctionDialog 2017-07-28 19:51:43 +03:00
Vyacheslav Gerasimov
da8a1fb0ca Fix compilation MovePropertyToConstructorIntention 2017-07-28 19:51:42 +03:00
Mikhail Glukhikh
8dbf977ff1 Branch 162 patch: only builds 162.1...162.* are compatible 2017-07-28 19:51:41 +03:00
Mikhail Zarechenskiy
e8c9ae0b1c Revert "Advance idea.plugins.compatible.build"
This reverts commit b101550cae.
2017-07-28 19:51:40 +03:00
Mikhail Zarechenskiy
25c2fe1b8f Revert "fix compilation" (+ more for 162 branch)
This reverts commit 594e2b6a77.
2017-07-28 19:51:38 +03:00
Mikhail Zarechenskiy
928dfb7c10 Revert "doMoveFile() now accepts not-null PsiDirectory"
This reverts commit 0995f2700e.
2017-07-28 19:51:37 +03:00
Mikhael Bogdanov
d7b8aab167 Copy readSeq/writeSeq from IDEA 171 2017-07-28 19:47:56 +03:00
Mikhael Bogdanov
707825f277 Use ConfigLibraryUtil.INSTANCE after convertion to Kotlin 2017-07-28 19:47:55 +03:00
Mikhael Bogdanov
84e91406b3 Revert "Use ASM 6 API to read class files in IDE" 2017-07-28 19:47:54 +03:00
Mikhael Bogdanov
8576a92022 Revert "Fix codegen tests on JDK 9 with jdkKind = FULL_JDK" 2017-07-28 19:47:53 +03:00
Mikhael Bogdanov
82412b2bf9 Continue. Disable modular JDK9 support 2017-07-28 19:47:52 +03:00
Nikolay Krasko
b0b38b39d3 Revert Re-enable optimize on the fly activation when unused imports found
This reverts commit 9122f58d5d
2017-07-28 19:47:51 +03:00
Alexey Sedunov
602c7ea4d6 Revert New File Action: Do not start under write action
This reverts commit 58addf72ff
2017-07-28 19:47:50 +03:00
Nikolay Krasko
7388011475 Comment step over for suspended calls in 162
Need to copy private API for creating step over command in
DebugProcessImplHelper.java

Support "Force Step Over" action over suspended calls (KT-18453)
850568b8e9

Step over for suspended calls (KT-18453)
0e8e8ef546
2017-07-28 19:47:49 +03:00
Vyacheslav Gerasimov
9255a54a39 Fix compilation: Set sdk to Jdk8 for some modules 2017-07-28 19:47:48 +03:00
Vyacheslav Gerasimov
d2b8d4339f Revert "Update to ASM 6-alpha from intellij 171"
This reverts commit 15502b4153.

# Conflicts:
#	.idea/libraries/idea_full.xml
#	.idea/libraries/intellij_core.xml
#	ultimate/.idea/libraries/idea_full.xml
#	ultimate/.idea/libraries/intellij_core.xml
2017-07-28 19:47:47 +03:00
Ilya Gorbunov
18f5652c8c Disable modular JDK9 support
PsiJavaModule is not supported in 162
2017-07-28 19:47:45 +03:00
Ilya Gorbunov
87c39b3589 Compilation fixes related to "Support compilation against modular JDK (9+)"
These fixes makes it unsupported again
2017-07-28 19:47:44 +03:00
Alexey Andreev
ff2e9a7111 Fix for "Copy: Support class copying" 2017-07-28 19:47:43 +03:00
Alexey Andreev
aee24d383d Fix for "Introduce isFromSourceCodeInScope function" 2017-07-28 19:47:42 +03:00
Vyacheslav Gerasimov
c6814312ea Revert "Inlay param/type support for kotlin" 2017-07-28 19:47:41 +03:00
Vyacheslav Gerasimov
20009c049b Fix compilation KotlinInlineValDialog 2017-07-28 19:47:40 +03:00
Vyacheslav Gerasimov
25298f74fc Revert "fix compilation against branch 163"
This reverts commit a2b0b3d6eb.
2017-07-28 19:47:39 +03:00
Vyacheslav Gerasimov
9ed4678098 Revert "LightQuickFixTestCase.parseActionHint() method was removed"
This reverts commit 4f079d2768.
2017-07-28 19:47:38 +03:00
Vyacheslav Gerasimov
8700d5c8a8 Revert "AbstractQuickFixTest: rename to .kt"
This reverts commit ad59a122ac.
2017-07-28 19:47:37 +03:00
Vyacheslav Gerasimov
6d812f53a9 Revert "AbstractQuickFixTest: J2K"
This reverts commit 34ad19a912.
2017-07-28 19:47:36 +03:00
Vyacheslav Gerasimov
a1478a7923 Revert "Rewrite AbstractQuickFixTest based on light fixture test case"
This reverts commit e2f75463d7.
2017-07-28 19:47:35 +03:00
Vyacheslav Gerasimov
9e9b1cbc46 Revert "AbstractQuickFixMultiFileTest: rename to .kt"
This reverts commit d11ea64f00.
2017-07-28 19:47:34 +03:00
Vyacheslav Gerasimov
a5fc4494eb Revert "AbstractQuickFixMultiFileTest: J2K"
This reverts commit 387dbdf3bb.
2017-07-28 19:47:33 +03:00
Vyacheslav Gerasimov
ee01c251f5 Revert "Convert AbstractQuickFixMultiFileTest to light fixture test case"
This reverts commit 4f229c3fdc.
2017-07-28 19:47:32 +03:00
Vyacheslav Gerasimov
70b408c33d Revert "Convert AddOpenToClassDeclarationTest to regular multifile quickfix test"
This reverts commit 79c814636e.
2017-07-28 19:47:30 +03:00
Mikhail Zarechenskiy
0d4b871568 Revert "Update IDEA to 171.2613.7"
This reverts commit 99af2a809b.
2017-07-28 19:47:29 +03:00
Mikhail Zarechenskiy
2b6cfc7ec9 Revert "Migrate IDEA plugin code to Android Studio 2.2 (br 145)"
This reverts commit 24c9b6e171.
2017-07-28 19:47:28 +03:00
Mikhail Zarechenskiy
f40f48808f Revert "fix compilation against branch 163"
This reverts commit a2b0b3d6eb.
2017-07-28 19:47:27 +03:00
Mikhail Zarechenskiy
430e711e2a Revert "Update compatible build number range"
This reverts commit aced2e7eb4.
2017-07-28 19:47:26 +03:00
Mikhail Zarechenskiy
964b5c8d0b Revert "update Kotlin icons according to new IntelliJ style"
This reverts commit fcdd5e0a19.
2017-07-28 19:47:25 +03:00
Mikhail Zarechenskiy
02817a8e00 Revert "Add resources_en.jar to properties plugin classpath"
This reverts commit 036bfed984.
2017-07-28 19:47:24 +03:00
Mikhail Zarechenskiy
2c584f4530 Revert "register PsiElementFinder extensions before JavaPsiFacade is registered"
This reverts commit e51018406f.
2017-07-28 19:47:23 +03:00
Mikhail Zarechenskiy
875dbde8d3 Revert "Fix dist by ignoring some library classes during compiler shrinking"
This reverts commit 6d958eb32b.
2017-07-28 19:47:22 +03:00
Mikhail Zarechenskiy
ff9df0bfa3 Revert "JPS: implement tracking of null annotations"
This reverts commit 05f278ce20.
2017-07-28 19:47:21 +03:00
Mikhail Zarechenskiy
6b7d6d9cd3 Revert "fix compilation of new lint checks against IDEA 163"
This reverts commit b10073465c.
2017-07-28 19:47:20 +03:00
Mikhail Zarechenskiy
dbb74089df Revert "remove write action around closeAndDeleteProject()"
This reverts commit ab5067a0d3.
2017-07-28 19:47:19 +03:00
Mikhail Zarechenskiy
5d5fbbbbda Revert "fix compilation"
This reverts commit 594e2b6a77.
2017-07-28 19:47:18 +03:00
Mikhail Zarechenskiy
afd1352ce2 Revert "Fixed KotlinAndroidResourceQuickFixProvider for AS 2.2"
This reverts commit 180ae070ee.
2017-07-28 19:47:17 +03:00
Mikhail Zarechenskiy
b47ff1792f Revert "Fix test code after UsefulTestCase api changes"
This reverts commit 4be5fcc14a.
2017-07-28 19:47:16 +03:00
Mikhail Zarechenskiy
1874a9f5df Revert "CreateFileResourceQuickFix now accepts ResourceFolderType instead of ResourceType"
This reverts commit 59055e28ee.
2017-07-28 19:47:15 +03:00
Mikhail Zarechenskiy
e40bc72b17 Revert "Fix compilation"
This reverts commit 60a2151a33.
2017-07-28 19:47:14 +03:00
Mikhail Zarechenskiy
cbbaba9c88 Revert "Workaround for hanging test"
This reverts commit 715410a9bc.
2017-07-28 19:47:13 +03:00
Mikhail Zarechenskiy
3e1bd28412 Revert "Move android modules to Java 8 SDK"
This reverts commit 2eb6c393a4.
2017-07-28 19:47:12 +03:00
Mikhail Zarechenskiy
bac48eb986 Revert "Fix ConfigureProjectTestGenerated / GradleConfigureProject ... for branch 163 (jre7->jre8)"
This reverts commit 83a8b041ad.
2017-07-28 19:47:11 +03:00
Mikhail Zarechenskiy
c4b23d1c35 Revert "Fix imports vs 2016.3 (ResourceFoldingBuilder)"
This reverts commit e6cefba98b.
2017-07-28 19:47:10 +03:00
Mikhail Zarechenskiy
cccee8a565 Revert "Remove unused import"
This reverts commit ed9e083008.
2017-07-28 19:47:08 +03:00
Mikhail Zarechenskiy
20554fe4b1 Revert "Update guava 19.0 sources jar"
This reverts commit 9f51b12193.
2017-07-28 19:47:07 +03:00
Mikhail Zarechenskiy
5152047695 Revert "LightQuickFixTestCase.parseActionHint() method was removed"
This reverts commit 4f079d2768.
2017-07-28 19:47:06 +03:00
Mikhail Zarechenskiy
42c3c640f3 Revert "Updated nullability in RunLineMarkerContributor"
This reverts commit 3e6f57b684.
2017-07-28 19:47:05 +03:00
Mikhail Zarechenskiy
f9f6164e21 Revert "Update after separating JPS builders into two modules"
This reverts commit 95061885b0.
2017-07-28 19:47:04 +03:00
Mikhail Zarechenskiy
73bc284285 Revert "Do not wrap analyze into write action priority in tests"
This reverts commit 82a2a705fb.
2017-07-28 19:47:03 +03:00
Mikhail Zarechenskiy
c47736c313 Revert "Run tests in read action and not in EDT thread"
This reverts commit bcf29e6fbf.
2017-07-28 19:47:02 +03:00
Mikhail Zarechenskiy
134bd40249 Revert "Use new api from idea 171 in KotlinStepOverInlinedLinesHint"
This reverts commit eb8415a1f3.
2017-07-28 19:47:00 +03:00
Mikhail Zarechenskiy
2ad97ef0a9 Revert "Try to avoid exception in getOffset() call"
This reverts commit 615f9d3a1f.
2017-07-28 19:46:59 +03:00
Mikhail Zarechenskiy
0e46556005 Revert "Replace removed method in LibraryPresentationProviders"
This reverts commit e57b3651c2.
2017-07-28 19:46:58 +03:00
Mikhail Zarechenskiy
f7c2a7de7c Revert "Port setInPerformanceTest -> setInStressTest"
This reverts commit 7da424d53f.
2017-07-28 19:46:57 +03:00
Mikhail Zarechenskiy
5d2ffb0cce Revert "! (TODO) Update build test data in 171"
This reverts commit 1d29c81346.
2017-07-28 19:46:56 +03:00
Mikhail Zarechenskiy
9fb05153cb Revert "Update to 171.SNAPSHOT to pick up fix for IDEA-169570; fix compilation"
This reverts commit 12fc89f35d.
2017-07-28 19:46:55 +03:00
Mikhail Zarechenskiy
9afa55f0b5 Revert "Fix testdata: Android projects use kotlin-stdlib-jre7"
This reverts commit 49a4625368.
2017-07-28 19:46:54 +03:00
Mikhail Zarechenskiy
578ebe2516 Revert "Fix GradleFacetImportTest: run write action only in EDT"
This reverts commit 3d98237304.
2017-07-28 19:46:53 +03:00
Mikhail Zarechenskiy
bd629de587 Revert "Don't try to create "add modifier" fix for read-only elements"
This reverts commit 374cf517e1.
2017-07-28 19:46:52 +03:00
Mikhail Zarechenskiy
73ac7c5261 Revert "Fix testdata according to changes in automatic renaming rules in 17.1"
This reverts commit d6709b726e.
2017-07-28 19:46:51 +03:00
Mikhail Zarechenskiy
1bca894007 Revert "Fix testdata according to comment selection changes in 2017.1"
This reverts commit ad821e83bd.
2017-07-28 19:46:50 +03:00
Mikhail Zarechenskiy
9bffef1e8b Revert "Fix testdata according to contract inference changes in 2017.1"
This reverts commit a539939388.
2017-07-28 19:46:49 +03:00
Mikhail Zarechenskiy
f78a41d5ce Revert "Fix service and EP registration according to changes in 2017.1"
This reverts commit 097ba45783.
2017-07-28 19:46:48 +03:00
Mikhail Zarechenskiy
ae2a5e59a9 Revert "Register MetaLanguage extension point in ParsingTestCase"
This reverts commit b9f326bfa1.
2017-07-28 19:46:47 +03:00
Mikhail Zarechenskiy
4192f9a799 Revert "Remove write action around finishLookup(), according to IJ 2017.1 req"
This reverts commit 61f157e89d.
2017-07-28 19:46:46 +03:00
Mikhail Zarechenskiy
528de3818f Revert "Register MetaLanguage.EP_NAME in J2K test"
This reverts commit a8bd529871.
2017-07-28 19:46:45 +03:00
Mikhail Zarechenskiy
dd860ce30a Revert "Remove Java 6/7 warning from expected output of the compiler"
This reverts commit 0d86bdd216.
2017-07-28 19:46:44 +03:00
Mikhail Zarechenskiy
8ec5bb6489 Revert "Fix NPE in tests when ProjectFileIndex is not available"
This reverts commit 0638106bf3.
2017-07-28 19:46:43 +03:00
Mikhail Zarechenskiy
98a5102397 Revert "Don't warn about ElementTraversal"
This reverts commit 4cae0538a8.
2017-07-28 19:46:42 +03:00
Mikhail Zarechenskiy
283cea0bc9 Revert "Keep class file version during shrinking; generate Java 8 bytecode"
This reverts commit 3a8cf68541.
2017-07-28 19:46:41 +03:00
Mikhail Zarechenskiy
3dc6f39eab Revert "JPS tests: avoid using deprecated API"
This reverts commit 40574d31ac.
2017-07-28 19:46:25 +03:00
Mikhail Zarechenskiy
21047fceab Revert "Black box update"
This reverts commit 496a21254b.
2017-07-28 19:42:57 +03:00
Mikhail Zarechenskiy
0ceb5a557c Revert "Move: Fix tests in IDEA 2017.1"
This reverts commit b65460c12f.
2017-07-28 19:42:55 +03:00
Mikhail Zarechenskiy
4f181636de Revert "Safe Delete: Fix tests in IDEA 2017.1"
This reverts commit ecd56c6a40.
2017-07-28 19:42:55 +03:00
Mikhail Zarechenskiy
39ec44e83f Revert "Move getting source position to manager thread in tests"
This reverts commit 4edfd0d960.
2017-07-28 19:42:54 +03:00
Mikhail Zarechenskiy
665c6e16a8 Revert "Fix compileJavaAgainstKotlin tests"
This reverts commit 3c96099f7c.
2017-07-28 19:42:53 +03:00
Mikhail Zarechenskiy
de47d9a238 Revert "Fix JvmRuntimeDescriptorLoaderTestGenerated"
This reverts commit 33e9e660c4.
2017-07-28 19:42:52 +03:00
Mikhail Zarechenskiy
628bfd8f96 Revert "Fix KotlinVersionsTest, use SAX parser instead of DOM"
This reverts commit 449d1f6ad2.
2017-07-28 19:42:51 +03:00
Mikhail Zarechenskiy
137ed6ab56 Revert "Update test data for ant task tests"
This reverts commit 999e1061b8.
2017-07-28 19:42:50 +03:00
Mikhail Zarechenskiy
ab40ee3877 Revert "Adjust test data for IDEA 2017.1"
This reverts commit 10aedaf0f4.
2017-07-28 19:42:49 +03:00
Mikhail Zarechenskiy
760a096327 Revert "kt1770.kt test rewrote during migration to 171 platform"
This reverts commit 211b58ac6e.
2017-07-28 19:42:48 +03:00
Mikhail Zarechenskiy
b20d9eb84c Revert "Fix test: check highlighting only in one direction"
This reverts commit cf18c2243f.
2017-07-28 19:42:47 +03:00
Mikhail Zarechenskiy
cb253bbe07 Revert "Fix regression of completion inside string templates"
This reverts commit 2804264289.
2017-07-28 19:42:46 +03:00
Mikhail Zarechenskiy
957141e5bd Revert "Spring Support: Fix tests in IDEA 2017.1"
This reverts commit 2e3617adbb.
2017-07-28 19:42:46 +03:00
Dmitry Jemerov
bd8db5a46c Revert Show more correct type hints
This reverts commit 8077a71aec
2017-07-28 19:42:45 +03:00
459 changed files with 2160 additions and 5505 deletions

View File

@@ -8,7 +8,7 @@
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$PROJECT_DIR$/dependencies/asm-src.zip!/" />
<root url="jar://$PROJECT_DIR$/dependencies/asm5-src.zip!/" />
</SOURCES>
</library>
</component>

View File

@@ -4,11 +4,11 @@
<root url="file://$PROJECT_DIR$/annotations" />
</ANNOTATIONS>
<CLASSES>
<root url="jar://$PROJECT_DIR$/ideaSDK/lib/guava-19.0.jar!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/lib/guava-17.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$PROJECT_DIR$/dependencies/guava-19.0-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/guava-17.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@@ -9,9 +9,9 @@
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$PROJECT_DIR$/dependencies/guava-19.0-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/guava-17.0-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/asm5-src.zip!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/asm-src.zip!/" />
</SOURCES>
<jarDirectory url="file://$PROJECT_DIR$/ideaSDK/lib" recursive="false" />
</library>

View File

@@ -7,7 +7,6 @@
<CLASSES>
<root url="jar://$PROJECT_DIR$/ideaSDK/core/annotations.jar!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/core/asm-all.jar!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/core/guava-19.0.jar!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/core/intellij-core.jar!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/core/jdom.jar!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/core/jna.jar!/" />
@@ -18,13 +17,15 @@
<root url="jar://$PROJECT_DIR$/ideaSDK/core/util.jar!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/core/xpp3-1.1.4-min.jar!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/core/xstream-1.4.8.jar!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/core/guava-17.0.jar!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/lib/jsr305.jar!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/core/guava-17.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$PROJECT_DIR$/dependencies/guava-19.0-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/guava-17.0-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/asm5-src.zip!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/asm-src.zip!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/lib/jsr305.jar!/" />
</SOURCES>
</library>

View File

@@ -5,7 +5,6 @@
</ANNOTATIONS>
<CLASSES>
<root url="jar://$PROJECT_DIR$/ideaSDK/plugins/properties/lib/properties.jar!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/plugins/properties/lib/resources_en.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>

View File

@@ -1,59 +0,0 @@
<component name="libraryTable">
<library name="robolectric">
<CLASSES>
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/accessibility-test-framework-2.1.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/ant-1.8.0.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/ant-launcher-1.8.0.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/asm-5.0.1.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/asm-commons-5.0.1.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/asm-tree-5.0.1.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/assertj-core-2.6.0.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/backport-util-concurrent-3.1.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/bcprov-jdk16-1.46.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/classworlds-1.1-alpha-2.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/guava-20.0.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/hamcrest-core-1.3.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/hamcrest-library-1.3.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/icu4j-53.1.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/maven-ant-tasks-2.1.3.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/maven-artifact-2.2.1.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/maven-artifact-manager-2.2.1.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/maven-error-diagnostics-2.2.1.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/maven-model-2.2.1.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/maven-plugin-registry-2.2.1.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/maven-profile-2.2.1.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/maven-project-2.2.1.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/maven-repository-metadata-2.2.1.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/maven-settings-2.2.1.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/nekohtml-1.9.6.2.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/plexus-container-default-1.0-alpha-9-stable-1.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/plexus-interpolation-1.11.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/plexus-utils-1.5.15.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/protobuf-java-2.6.1.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/robolectric-3.3.2.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/robolectric-annotations-3.3.2.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/robolectric-junit-3.3.2.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/robolectric-resources-3.3.2.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/robolectric-sandbox-3.3.2.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/robolectric-utils-3.3.2.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/shadow-api-3.3.2.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/shadows-core-3.3.2.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/sqlite4java-0.282.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/wagon-file-1.0-beta-6.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/wagon-http-lightweight-1.0-beta-6.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/wagon-http-shared-1.0-beta-6.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/wagon-provider-api-1.0-beta-6.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/xercesMinimal-1.9.6.2.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/xmlpull-1.1.3.1.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/xpp3_min-1.1.4c.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/xstream-1.4.8.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/robolectric-3.3.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/robolectric-3.3.2-sources-source.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/robolectric/robolectric-3.3.2-sources.jar!/" />
</SOURCES>
</library>
</component>

1
.idea/misc.xml generated
View File

@@ -6,6 +6,7 @@
</properties>
</component>
<component name="EntryPointsManager">
<entry_points version="2.0" />
<list size="1">
<item index="0" class="java.lang.String" itemvalue="javax.inject.Inject" />
</list>

View File

@@ -1,28 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Codegen Tests with JVM target 9 on JDK 9 " type="JUnit" factoryName="JUnit">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="org.jetbrains.kotlin.codegen.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="compiler-tests" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
<option name="ALTERNATIVE_JRE_PATH" value="9-ea" />
<option name="PACKAGE_NAME" value="org.jetbrains.kotlin.codegen" />
<option name="MAIN_CLASS_NAME" value="org.jetbrains.kotlin.codegen.CodegenJdkCommonTestSuite" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="class" />
<option name="VM_PARAMETERS" value="-Dkotlin.test.default.jvm.target=1.8 -Dkotlin.test.substitute.bytecode.1.8.to.1.9=true -ea -XX:+HeapDumpOnOutOfMemoryError -XX:+UseCodeCacheFlushing -XX:ReservedCodeCacheSize=128m -Djna.nosys=true --add-opens java.desktop/javax.swing=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
<method />
</configuration>
</component>

View File

@@ -25,7 +25,7 @@
<property environment="env"/>
<property name="tools.jar" value="${env.JDK_18}/lib/tools.jar"/>
<property name="java.target" value="1.8"/>
<property name="java.target" value="1.6"/>
<condition property="bootstrap.or.local.build" value="true" else="false">
<or>
@@ -387,7 +387,7 @@
<zipgroupfileset dir="${basedir}/lib" includes="*.jar"/>
<zipfileset src="${basedir}/ideaSDK/core/annotations.jar"/>
<zipfileset src="${basedir}/ideaSDK/core/asm-all.jar"/>
<zipfileset src="${basedir}/ideaSDK/core/guava-19.0.jar"/>
<zipfileset src="${basedir}/ideaSDK/core/guava-17.0.jar"/>
<zipfileset src="${basedir}/ideaSDK/core/intellij-core.jar"/>
<zipfileset src="${basedir}/ideaSDK/core/jdom.jar" excludes="META-INF/jb/** META-INF/LICENSE"/>
<zipfileset src="${basedir}/ideaSDK/core/jna.jar"/>

View File

@@ -29,8 +29,8 @@ public class AndroidJpsBuildTestCase extends BaseKotlinJpsBuildTestCase {
public void doTest() {
initProject();
rebuildAllModules();
buildAllModules().assertSuccessful();
rebuildAll();
makeAll().assertSuccessful();
}
@Override

View File

@@ -20,9 +20,9 @@ import com.intellij.openapi.vfs.StandardFileSystems
import com.intellij.openapi.vfs.VfsUtilCore
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.vfs.VirtualFileManager
import com.intellij.psi.PsiJavaModule
//import com.intellij.psi.PsiJavaModule
import com.intellij.psi.PsiManager
import com.intellij.psi.impl.light.LightJavaModule
//import com.intellij.psi.impl.light.LightJavaModule
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.*
@@ -100,6 +100,8 @@ internal class ClasspathRootsResolver(
}
private fun modularSourceRoot(root: VirtualFile): JavaModule.Explicit? {
return null
/*
val moduleInfoFile =
when {
root.isDirectory -> root.findChild(PsiJavaModule.MODULE_INFO_FILE)
@@ -110,19 +112,14 @@ internal class ClasspathRootsResolver(
val psiFile = psiManager.findFile(moduleInfoFile) ?: return null
val psiJavaModule = psiFile.children.singleOrNull { it is PsiJavaModule } as? PsiJavaModule ?: return null
return JavaModule.Explicit(JavaModuleInfo.create(psiJavaModule), root, moduleInfoFile, isBinary = false)
*/
}
private fun modularBinaryRoot(root: VirtualFile, originalFile: File): JavaModule? {
val isJar = root.fileSystem.protocol == StandardFileSystems.JAR_PROTOCOL
val manifest: Attributes? by lazy(NONE) { readManifestAttributes(root) }
val moduleInfoFile =
root.findChild(PsiJavaModule.MODULE_INFO_CLS_FILE)
?: root.takeIf { isJar }?.findFileByRelativePath(MULTI_RELEASE_MODULE_INFO_CLS_FILE)?.takeIf {
manifest?.getValue(IS_MULTI_RELEASE)?.equals("true", ignoreCase = true) == true
}
if (moduleInfoFile != null) {
return null
/*
val moduleInfoFile = root.findChild(PsiJavaModule.MODULE_INFO_CLS_FILE)
return if (moduleInfoFile != null) {
val moduleInfo = JavaModuleInfo.read(moduleInfoFile) ?: return null
return JavaModule.Explicit(moduleInfo, root, moduleInfoFile, isBinary = true)
}
@@ -141,8 +138,6 @@ internal class ClasspathRootsResolver(
}
return JavaModule.Automatic(moduleName, root)
}
return null
}
private fun readManifestAttributes(jarRoot: VirtualFile): Attributes? {
@@ -153,6 +148,7 @@ internal class ClasspathRootsResolver(
catch (e: IOException) {
null
}
*/
}
private fun addModularRoots(modules: List<JavaModule>, result: MutableList<JavaRoot>) {
@@ -264,7 +260,6 @@ internal class ClasspathRootsResolver(
}
private companion object {
const val MULTI_RELEASE_MODULE_INFO_CLS_FILE = "META-INF/versions/9/${PsiJavaModule.MODULE_INFO_CLS_FILE}"
const val AUTOMATIC_MODULE_NAME = "Automatic-Module-Name"
const val IS_MULTI_RELEASE = "Multi-Release"
}

View File

@@ -235,11 +235,6 @@ class KotlinCliJavaFileManagerImpl(private val myPsiManager: PsiManager) : CoreJ
return result
}
override fun findModules(moduleName: String, scope: GlobalSearchScope): Collection<PsiJavaModule> {
// TODO
return emptySet()
}
override fun getNonTrivialPackagePrefixes(): Collection<String> = emptyList()
companion object {

View File

@@ -26,7 +26,6 @@ import com.intellij.core.JavaCoreApplicationEnvironment
import com.intellij.core.JavaCoreProjectEnvironment
import com.intellij.ide.highlighter.JavaFileType
import com.intellij.ide.plugins.PluginManagerCore
import com.intellij.lang.MetaLanguage
import com.intellij.lang.java.JavaParserDefinition
import com.intellij.openapi.Disposable
import com.intellij.openapi.application.ApplicationManager
@@ -121,28 +120,6 @@ class KotlinCoreEnvironment private constructor(
override fun preregisterServices() {
registerProjectExtensionPoints(Extensions.getArea(project))
}
override fun registerJavaPsiFacade() {
with (project) {
registerService(CoreJavaFileManager::class.java, ServiceManager.getService(this, JavaFileManager::class.java) as CoreJavaFileManager)
val cliLightClassGenerationSupport = CliLightClassGenerationSupport(this)
registerService(LightClassGenerationSupport::class.java, cliLightClassGenerationSupport)
registerService(CliLightClassGenerationSupport::class.java, cliLightClassGenerationSupport)
registerService(CodeAnalyzerInitializer::class.java, cliLightClassGenerationSupport)
registerService(ExternalAnnotationsManager::class.java, MockExternalAnnotationsManager())
registerService(InferredAnnotationsManager::class.java, MockInferredAnnotationsManager())
val area = Extensions.getArea(this)
area.getExtensionPoint(PsiElementFinder.EP_NAME).registerExtension(JavaElementFinder(this, cliLightClassGenerationSupport))
area.getExtensionPoint(PsiElementFinder.EP_NAME).registerExtension(
PsiElementFinderImpl(this, ServiceManager.getService(this, JavaFileManager::class.java)))
}
super.registerJavaPsiFacade()
}
}
private val sourceFiles = mutableListOf<KtFile>()
@@ -208,12 +185,12 @@ class KotlinCoreEnvironment private constructor(
this.initialRoots = initialRoots
if (!configuration.getBoolean(JVMConfigurationKeys.SKIP_RUNTIME_VERSION_CHECK) && messageCollector != null) {
JvmRuntimeVersionsConsistencyChecker.checkCompilerClasspathConsistency(
messageCollector,
configuration,
initialRoots.mapNotNull { (file, type) -> if (type == JavaRoot.RootType.BINARY) file else null }
)
}
JvmRuntimeVersionsConsistencyChecker.checkCompilerClasspathConsistency(
messageCollector,
configuration,
initialRoots.mapNotNull { (file, type) -> if (type == JavaRoot.RootType.BINARY) file else null }
)
}
val (roots, singleJavaFileRoots) =
initialRoots.partition { (file) -> file.isDirectory || file.extension != JavaFileType.DEFAULT_EXTENSION }
@@ -300,7 +277,7 @@ class KotlinCoreEnvironment private constructor(
for (packagePartProvider in packagePartProviders) {
packagePartProvider.addRoots(newRoots)
}
}
return rootsIndex.addNewIndexForRoots(newRoots)?.let { newIndex ->
updateClasspathFromRootsIndex(newIndex)
@@ -325,9 +302,9 @@ class KotlinCoreEnvironment private constructor(
return findLocalFile(root.file.absolutePath).also {
if (it == null) {
report(STRONG_WARNING, "Classpath entry points to a non-existent location: ${root.file}")
}
}
}
}
private fun findJarRoot(file: File): VirtualFile? =
applicationEnvironment.jarFileSystem.findFileByPath("$file${URLUtil.JAR_SEPARATOR}")
@@ -351,7 +328,7 @@ class KotlinCoreEnvironment private constructor(
}
companion object {
private val ideaCompatibleBuildNumber = "171.9999"
private val ideaCompatibleBuildNumber = "162.9999"
init {
setCompatibleBuild()
@@ -441,6 +418,7 @@ class KotlinCoreEnvironment private constructor(
Extensions.cleanRootArea(parentDisposable)
registerAppExtensionPoints()
val applicationEnvironment = object : JavaCoreApplicationEnvironment(parentDisposable) {
@Suppress("NOTHING_TO_OVERRIDE")
override fun createJrtFileSystem(): VirtualFileSystem? {
val jdkHome = configuration[JVMConfigurationKeys.JDK_HOME] ?: return null
return CoreJrtFileSystem.create(jdkHome)
@@ -470,7 +448,6 @@ class KotlinCoreEnvironment private constructor(
CoreApplicationEnvironment.registerExtensionPoint(Extensions.getRootArea(), ClassFileDecompilers.EP_NAME, ClassFileDecompilers.Decompiler::class.java)
//
CoreApplicationEnvironment.registerExtensionPoint(Extensions.getRootArea(), TypeAnnotationModifier.EP_NAME, TypeAnnotationModifier::class.java)
CoreApplicationEnvironment.registerExtensionPoint(Extensions.getRootArea(), MetaLanguage.EP_NAME, MetaLanguage::class.java)
}
private fun registerApplicationExtensionPointsAndExtensionsFrom(configuration: CompilerConfiguration, configFilePath: String) {
@@ -533,11 +510,23 @@ class KotlinCoreEnvironment private constructor(
}
private fun registerProjectServicesForCLI(@Suppress("UNUSED_PARAMETER") projectEnvironment: JavaCoreProjectEnvironment) {
/**
* Note that Kapt may restart code analysis process, and CLI services should be aware of that.
* Use PsiManager.getModificationTracker() to ensure that all the data you cached is still valid.
*/
with (projectEnvironment.project) {
registerService(CoreJavaFileManager::class.java, ServiceManager.getService(this, JavaFileManager::class.java) as CoreJavaFileManager)
val cliLightClassGenerationSupport = CliLightClassGenerationSupport(this)
registerService(LightClassGenerationSupport::class.java, cliLightClassGenerationSupport)
registerService(CliLightClassGenerationSupport::class.java, cliLightClassGenerationSupport)
registerService(CodeAnalyzerInitializer::class.java, cliLightClassGenerationSupport)
registerService(ExternalAnnotationsManager::class.java, MockExternalAnnotationsManager())
registerService(InferredAnnotationsManager::class.java, MockInferredAnnotationsManager())
val area = Extensions.getArea(this)
area.getExtensionPoint(PsiElementFinder.EP_NAME).registerExtension(JavaElementFinder(this, cliLightClassGenerationSupport))
area.getExtensionPoint(PsiElementFinder.EP_NAME).registerExtension(
PsiElementFinderImpl(this, ServiceManager.getService(this, JavaFileManager::class.java)))
}
}
}
}

View File

@@ -26,5 +26,11 @@ open class KotlinCoreProjectEnvironment(
disposable: Disposable,
applicationEnvironment: JavaCoreApplicationEnvironment
) : JavaCoreProjectEnvironment(disposable, applicationEnvironment) {
init {
myProject.registerService<ControlFlowFactory>(ControlFlowFactory::class.java,
ControlFlowFactory(myPsiManager))
}
override fun createCoreFileManager() = KotlinCliJavaFileManagerImpl(PsiManager.getInstance(project))
}

View File

@@ -20,7 +20,7 @@ import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VfsUtilCore
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiJavaModule
//import com.intellij.psi.PsiJavaModule
import com.intellij.psi.PsiManager
import com.intellij.psi.impl.PsiModificationTrackerImpl
import com.intellij.psi.search.DelegatingGlobalSearchScope
@@ -192,14 +192,15 @@ object KotlinToJVMBytecodeCompiler {
}
}
val isJava9Module = chunk.any { module ->
val isJava9Module = false
/*chunk.any { module ->
module.getJavaSourceRoots().any { (path, packagePrefix) ->
val file = File(path)
packagePrefix == null &&
(file.name == PsiJavaModule.MODULE_INFO_FILE ||
(file.isDirectory && file.listFiles().any { it.name == PsiJavaModule.MODULE_INFO_FILE }))
}
}
}*/
for (module in chunk) {
for (classpathRoot in module.getClasspathRoots()) {

View File

@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.cli.jvm.modules
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.vfs.VirtualFileSystem
import com.intellij.psi.PsiJavaModule
//import com.intellij.psi.PsiJavaModule
import org.jetbrains.kotlin.resolve.jvm.modules.JavaModule
import org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleFinder
import org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleInfo
@@ -41,8 +41,11 @@ internal class CliJavaModuleFinder(private val jrtFileSystem: VirtualFileSystem?
?: userModules[name]
private fun findSystemModule(moduleRoot: VirtualFile): JavaModule.Explicit? {
return null
/*
val file = moduleRoot.findChild(PsiJavaModule.MODULE_INFO_CLS_FILE) ?: return null
val moduleInfo = JavaModuleInfo.read(file) ?: return null
return JavaModule.Explicit(moduleInfo, moduleRoot, file, isBinary = true)
*/
}
}

View File

@@ -46,12 +46,6 @@ messages/**)
-dontwarn com.google.j2objc.annotations.Weak
-dontwarn org.iq80.snappy.HadoopSnappyCodec$SnappyCompressionInputStream
-dontwarn org.iq80.snappy.HadoopSnappyCodec$SnappyCompressionOutputStream
-dontwarn com.google.common.util.concurrent.*
-dontwarn org.apache.xerces.dom.**
-dontwarn org.apache.xerces.util.**
-dontwarn org.w3c.dom.ElementTraversal
-dontwarn javaslang.match.annotation.Unapply
-dontwarn javaslang.match.annotation.Patterns
-dontwarn org.jline.builtins.Nano$Buffer
-libraryjars '<rtjar>'
@@ -61,6 +55,7 @@ messages/**)
-libraryjars '<bootstrap.script.runtime>'
-libraryjars '<tools.jar>'
-target 1.6
-dontoptimize
-dontobfuscate

View File

@@ -23,13 +23,11 @@ enum class JvmTarget(override val description: String) : TargetPlatformVersion {
JVM_1_8("1.8"),
;
val bytecodeVersion: Int by lazy {
when (this) {
val bytecodeVersion: Int
get() = when(this) {
JVM_1_6 -> Opcodes.V1_6
JVM_1_8 ->
if (java.lang.Boolean.valueOf(System.getProperty("kotlin.test.substitute.bytecode.1.8.to.1.9"))) Opcodes.V1_9 else Opcodes.V1_8
JVM_1_8 -> Opcodes.V1_8
}
}
companion object {
@JvmField
@@ -42,7 +40,7 @@ enum class JvmTarget(override val description: String) : TargetPlatformVersion {
val platformDescription = values().find { it.bytecodeVersion == bytecodeVersion }?.description ?:
when (bytecodeVersion) {
Opcodes.V1_7 -> "1.7"
Opcodes.V1_9 -> "1.9"
Opcodes.V1_8 + 1 -> "1.9"
else -> null
}

View File

@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.load.java.structure.*
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtPsiUtil
import org.jetbrains.kotlin.psi.psiUtil.contains
class JavaClassImpl(psiClass: PsiClass) : JavaClassifierImpl<PsiClass>(psiClass), VirtualFileBoundJavaClass, JavaAnnotationOwnerImpl, JavaModifierListOwnerImpl {
init {
@@ -114,7 +115,7 @@ class JavaClassImpl(psiClass: PsiClass) : JavaClassifierImpl<PsiClass>(psiClass)
override val virtualFile: VirtualFile?
get() = psi.containingFile?.virtualFile
override fun isFromSourceCodeInScope(scope: SearchScope): Boolean = psi.containingFile.virtualFile in scope
override fun isFromSourceCodeInScope(scope: SearchScope): Boolean = psi.containingFile in scope
override fun getAnnotationOwnerPsi() = psi.modifierList

View File

@@ -22,7 +22,6 @@ import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.components.ServiceManager
import com.intellij.openapi.util.Computable
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiJavaModule
class KotlinBinaryClassCache : Disposable {
private class RequestCache {
@@ -56,8 +55,6 @@ class KotlinBinaryClassCache : Disposable {
fun getKotlinBinaryClass(file: VirtualFile, fileContent: ByteArray? = null): KotlinJvmBinaryClass? {
if (file.fileType !== JavaClassFileType.INSTANCE) return null
if (file.name == PsiJavaModule.MODULE_INFO_CLS_FILE) return null
val service = ServiceManager.getService(KotlinBinaryClassCache::class.java)
val requestCache = service.cache.get()

View File

@@ -17,15 +17,16 @@
package org.jetbrains.kotlin.resolve.jvm.modules
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiJavaModule
//import com.intellij.psi.PsiJavaModule
import com.intellij.psi.PsiModifier
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.utils.compact
/*
import org.jetbrains.org.objectweb.asm.ClassReader
import org.jetbrains.org.objectweb.asm.ClassVisitor
import org.jetbrains.org.objectweb.asm.ModuleVisitor
import org.jetbrains.org.objectweb.asm.Opcodes
import org.jetbrains.org.objectweb.asm.Opcodes.ACC_TRANSITIVE
import org.jetbrains.org.objectweb.asm.Opcodes.*
*/
import java.io.IOException
class JavaModuleInfo(
@@ -41,6 +42,7 @@ class JavaModuleInfo(
"Module $moduleName (${requires.size} requires, ${exports.size} exports)"
companion object {
/*
fun create(psiJavaModule: PsiJavaModule): JavaModuleInfo {
return JavaModuleInfo(
psiJavaModule.name,
@@ -56,7 +58,10 @@ class JavaModuleInfo(
}
)
}
*/
fun read(file: VirtualFile): JavaModuleInfo? = null // unsupported with this version of ASM
/*
fun read(file: VirtualFile): JavaModuleInfo? {
val contents = try { file.contentsToByteArray() } catch (e: IOException) { return null }
@@ -85,5 +90,6 @@ class JavaModuleInfo(
JavaModuleInfo(moduleName!!, requires.compact(), exports.compact())
else null
}
*/
}
}

View File

@@ -1,4 +1,5 @@
warning: flag is not supported by this version of the compiler: -Xabcdefghijklm
warning: flag is not supported by this version of the compiler: -Xnopqrstuvwxyz
warning: flag is not supported by this version of the compiler: -XXxxxxxxxxxxxx
warning: running the Kotlin compiler under Java 6 or 7 is unsupported and will no longer be possible in a future update.
OK

View File

@@ -2,16 +2,21 @@
// IGNORE_BACKEND: JS, NATIVE
// FULL_JDK
// WITH_RUNTIME
//This front-end problem test added to box ones only cause of FULL_JDK support
import org.w3c.dom.Element
import org.xml.sax.InputSource
import javax.xml.parsers.DocumentBuilderFactory
import java.io.StringReader
class MyElement(e: Element): Element by e {
fun bar() = "OK"
}
fun box() : String {
val touch = MyElement::class.java
return "OK"
val factory = DocumentBuilderFactory.newInstance()!!;
val builder = factory.newDocumentBuilder()!!;
val source = InputSource(StringReader("<OK></OK>"));
val doc = builder.parse(source)!!;
val myElement = MyElement(doc.getDocumentElement()!!)
return myElement.getTagName()!!
}

View File

@@ -25,10 +25,8 @@ fun box(): String {
// Java class without nested classes
assertEquals(emptyList<String>(), nestedNames(Error::class))
// Java interface with nested classes
assertEquals(listOf("Entry"), nestedNames(java.util.Map::class))
// Java class with nested classes
assertEquals(listOf("SimpleEntry", "SimpleImmutableEntry"), nestedNames(java.util.AbstractMap::class))
assertEquals(listOf("State", "UncaughtExceptionHandler"), nestedNames(Thread::class))
// Built-ins
assertEquals(emptyList<String>(), nestedNames(Array<Any>::class))

View File

@@ -1,5 +1,5 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
// IGNORE_BACKEND: JS, NATIVE, JVM
// WITH_REFLECT
// FULL_JDK

View File

@@ -1,26 +0,0 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
// WITH_REFLECT
// FULL_JDK
// See KT-11258 Incorrect resolution sequence for Java field
//SHOULD BE deleted after KT-16616 fix
import java.util.*
fun box(): String {
listOf(
ArrayList::class,
LinkedList::class,
AbstractList::class,
HashSet::class,
TreeSet::class,
HashMap::class,
TreeMap::class,
AbstractMap::class,
AbstractMap.SimpleEntry::class
).map {
it.members.map(Any::toString)
}
return "OK"
}

View File

@@ -1,53 +0,0 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
// FULL_JDK
// WITH_RUNTIME
interface ImmutableCollection<out E> : Collection<E> {
fun add(element: @UnsafeVariance E): ImmutableCollection<E>
fun addAll(elements: Collection<@UnsafeVariance E>): ImmutableCollection<E>
fun remove(element: @UnsafeVariance E): ImmutableCollection<E>
}
class ImmutableCollectionmpl<E> : ImmutableCollection<E> {
override val size: Int
get() = throw UnsupportedOperationException()
override fun contains(element: E): Boolean {
throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun containsAll(elements: Collection<E>): Boolean {
throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun isEmpty(): Boolean {
throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun iterator(): Iterator<E> {
throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun add(element: E): ImmutableCollection<E> = this
override fun addAll(elements: Collection<E>): ImmutableCollection<E> = this
override fun remove(element: E): ImmutableCollection<E> = this
}
fun box(): String {
val c = ImmutableCollectionmpl<String>()
if (c.remove("") !== c) return "fail 1"
if (c.add("") !== c) return "fail 2"
if (c.addAll(java.util.ArrayList()) !== c) return "fail 3"
val method = c.javaClass.methods.single { it.name == "remove" && it.returnType == Boolean::class.javaPrimitiveType }
try {
method.invoke(c, "")
return "fail 4"
} catch (e: java.lang.reflect.InvocationTargetException) {
if (e.cause!!.message != "Operation is not supported for read-only collection") return "fail 5: ${e.cause!!.message}"
}
return "OK"
}

View File

@@ -1,22 +0,0 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
// WITH_REFLECT
// FILE: J.java
public class J {
void foo(String s, int i) {}
static void bar(J j) {}
}
// FILE: K.kt
import kotlin.test.assertEquals
fun box(): String {
assertEquals(listOf(null, "arg0", "arg1"), J::foo.parameters.map { it.name })
assertEquals(listOf("arg0"), J::bar.parameters.map { it.name })
return "OK"
}

View File

@@ -0,0 +1,33 @@
@kotlin.Metadata
public interface ImmutableCollection {
public abstract @org.jetbrains.annotations.NotNull method add(p0: java.lang.Object): ImmutableCollection
public abstract @org.jetbrains.annotations.NotNull method addAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): ImmutableCollection
public abstract @org.jetbrains.annotations.NotNull method remove(p0: java.lang.Object): ImmutableCollection
}
@kotlin.Metadata
public final class ImmutableCollectionmpl {
public method <init>(): void
public @org.jetbrains.annotations.NotNull method add(p0: java.lang.Object): ImmutableCollection
public method add(p0: java.lang.Object): boolean
public @org.jetbrains.annotations.NotNull method addAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): ImmutableCollection
public method addAll(p0: java.util.Collection): boolean
public method clear(): void
public method contains(p0: java.lang.Object): boolean
public method containsAll(@org.jetbrains.annotations.NotNull p0: java.util.Collection): boolean
public method getSize(): int
public method isEmpty(): boolean
public @org.jetbrains.annotations.NotNull method iterator(): java.util.Iterator
public @org.jetbrains.annotations.NotNull method remove(p0: java.lang.Object): ImmutableCollection
public method remove(p0: java.lang.Object): boolean
public method removeAll(p0: java.util.Collection): boolean
public method retainAll(p0: java.util.Collection): boolean
public final method size(): int
public method toArray(): java.lang.Object[]
public method toArray(p0: java.lang.Object[]): java.lang.Object[]
}
@kotlin.Metadata
public final class ImmutableRemoveKt {
public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String
}

View File

@@ -0,0 +1,4 @@
@kotlin.Metadata
public final class KKt {
public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String
}

View File

@@ -0,0 +1,13 @@
package test
public sealed class Season {
private constructor Season()
public final class Cold : test.Season {
public constructor Cold()
}
public final class Warm : test.Season {
public constructor Warm()
}
}

View File

@@ -0,0 +1,13 @@
package test
public sealed class Season {
private constructor Season()
public final class Cold : test.Season {
public constructor Cold()
}
public final class Warm : test.Season {
public constructor Warm()
}
}

View File

@@ -0,0 +1,9 @@
package test
@test.meta public/*package*/ final annotation class MyAnn : kotlin.Annotation {
public/*package*/ constructor MyAnn()
}
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.ANNOTATION_CLASS}) public final annotation class meta : kotlin.Annotation {
public constructor meta()
}

View File

@@ -0,0 +1,5 @@
package test
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) public final annotation class classifier : kotlin.Annotation {
public constructor classifier()
}

View File

@@ -0,0 +1,5 @@
package test
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CONSTRUCTOR}) public final annotation class constructor : kotlin.Annotation {
public constructor constructor()
}

View File

@@ -0,0 +1,5 @@
package test
@kotlin.annotation.Target(allowedTargets = {}) public final annotation class empty : kotlin.Annotation {
public constructor empty()
}

View File

@@ -0,0 +1,5 @@
package test
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.FIELD}) public final annotation class field : kotlin.Annotation {
public constructor field()
}

View File

@@ -0,0 +1,5 @@
package test
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.FUNCTION}) public final annotation class function : kotlin.Annotation {
public constructor function()
}

View File

@@ -0,0 +1,5 @@
package test
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.PROPERTY_GETTER}) public final annotation class getter : kotlin.Annotation {
public constructor getter()
}

View File

@@ -0,0 +1,5 @@
package test
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.LOCAL_VARIABLE}) public final annotation class local : kotlin.Annotation {
public constructor local()
}

View File

@@ -0,0 +1,5 @@
package test
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION}) public final annotation class multiple : kotlin.Annotation {
public constructor multiple()
}

View File

@@ -0,0 +1,5 @@
package test
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.VALUE_PARAMETER}) public final annotation class parameter : kotlin.Annotation {
public constructor parameter()
}

View File

@@ -0,0 +1,5 @@
package test
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.PROPERTY}) public final annotation class property : kotlin.Annotation {
public constructor property()
}

View File

@@ -0,0 +1,5 @@
package test
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.PROPERTY_SETTER}) public final annotation class setter : kotlin.Annotation {
public constructor setter()
}

View File

@@ -5,11 +5,11 @@ build:
[mkdir] Created dir: [Temp]/classes
[javac] Compiling 1 source file to [Temp]/classes
[javac] Running javac...
[javac] [TestData]/J.java:3: error: cannot find symbol
[javac] [TestData]/J.java:3: cannot find symbol
[javac] symbol : class KClassesKt
[javac] location: package kotlin.reflect
[javac] import kotlin.reflect.KClassesKt;
[javac] ^
[javac] symbol: class KClassesKt
[javac] location: package kotlin.reflect
[javac] 1 error
ERR:

View File

@@ -5,7 +5,7 @@ build:
[mkdir] Created dir: [Temp]/classes
[javac] Compiling 1 source file to [Temp]/classes
[javac] Running javac...
[javac] [TestData]/J.java:3: error: package kotlin does not exist
[javac] [TestData]/J.java:3: package kotlin does not exist
[javac] import kotlin.Unit;
[javac] ^
[javac] 1 error

View File

@@ -1,5 +1,3 @@
// FULL_JDK
package test;
public abstract class ClassDoesNotOverrideMethod extends java.util.Date {

View File

@@ -1,5 +1,3 @@
// FULL_JDK
package test;
public abstract class ClassWithTypePExtendsIterableP<P> implements java.lang.Iterable<P> {

View File

@@ -0,0 +1,14 @@
package test
public open class InnerClassesInGeneric</*0*/ P : kotlin.Any!, /*1*/ Q : kotlin.Any!> {
public constructor InnerClassesInGeneric</*0*/ P : kotlin.Any!, /*1*/ Q : kotlin.Any!>()
public open inner class Inner /*captured type parameters: /*0*/ P : kotlin.Any!, /*1*/ Q : kotlin.Any!*/ {
public constructor Inner()
}
public open inner class Inner2 /*captured type parameters: /*0*/ P : kotlin.Any!, /*1*/ Q : kotlin.Any!*/ : test.InnerClassesInGeneric<kotlin.Any!, kotlin.Any!>.Inner {
public constructor Inner2()
public open operator fun iterator(): kotlin.collections.(Mutable)Iterator<P!>!
}
}

View File

@@ -0,0 +1,28 @@
package test
public open class InnerOfGeneric {
public constructor InnerOfGeneric()
public abstract inner class A</*0*/ K : kotlin.Any!> {
public constructor A</*0*/ K : kotlin.Any!>()
public abstract inner class Inner /*captured type parameters: /*0*/ K : kotlin.Any!*/ : test.InnerOfGeneric.S<K!> {
public constructor Inner()
public open override /*1*/ /*fake_override*/ fun iterator(): kotlin.collections.(Mutable)Iterator<K!>!
}
}
public open inner class B</*0*/ L : kotlin.Any!> : test.InnerOfGeneric.A<L!> {
public constructor B</*0*/ L : kotlin.Any!>()
public open inner class SubInner /*captured type parameters: /*0*/ L : kotlin.Any!*/ : test.InnerOfGeneric.A<kotlin.Any!>.Inner {
public constructor SubInner()
public open override /*1*/ fun iterator(): kotlin.collections.(Mutable)Iterator<L!>!
}
}
public open inner class S</*0*/ E : kotlin.Any!> {
public constructor S</*0*/ E : kotlin.Any!>()
public open operator fun iterator(): kotlin.collections.(Mutable)Iterator<E!>!
}
}

View File

@@ -0,0 +1,22 @@
package test
public interface ReturnInnerSubclassOfSupersInner {
public open class Sub</*0*/ B : kotlin.Any!> : test.ReturnInnerSubclassOfSupersInner.Super<B!> {
public constructor Sub</*0*/ B : kotlin.Any!>()
public/*package*/ open inner class Inner /*captured type parameters: /*0*/ B : kotlin.Any!*/ : test.ReturnInnerSubclassOfSupersInner.Super<kotlin.Any!>.Inner {
public/*package*/ constructor Inner()
public/*package*/ open override /*1*/ fun get(): test.ReturnInnerSubclassOfSupersInner.Sub<B!>!
}
}
public open class Super</*0*/ A : kotlin.Any!> {
public constructor Super</*0*/ A : kotlin.Any!>()
public/*package*/ open inner class Inner /*captured type parameters: /*0*/ A : kotlin.Any!*/ {
public/*package*/ constructor Inner()
public/*package*/ open fun get(): test.ReturnInnerSubclassOfSupersInner.Super<A!>!
}
}
}

View File

@@ -2,10 +2,8 @@
package test
import java.io.Serializable
annotation class A
interface Foo<T : @A Number> : @A Serializable {
interface Foo<T : @A Number> : @A CharSequence {
fun <E, F : @A E> bar()
}

View File

@@ -4,6 +4,10 @@ public final annotation class A : kotlin.Annotation {
/*primary*/ public constructor A()
}
public interface Foo</*0*/ T : @test.A kotlin.Number> : @test.A java.io.Serializable {
public interface Foo</*0*/ T : @test.A kotlin.Number> : @test.A kotlin.CharSequence {
public abstract override /*1*/ /*fake_override*/ val length: kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun <get-length>(): kotlin.Int
public abstract fun </*0*/ E, /*1*/ F : @test.A E> bar(): kotlin.Unit
public abstract override /*1*/ /*fake_override*/ fun get(/*0*/ index: kotlin.Int): kotlin.Char
public abstract override /*1*/ /*fake_override*/ fun subSequence(/*0*/ startIndex: kotlin.Int, /*1*/ endIndex: kotlin.Int): kotlin.CharSequence
}

View File

@@ -1,5 +1,3 @@
// FULL_JDK
package test
public abstract class ClassDoesNotOverrideMethod() : java.util.Date() {

View File

@@ -1,5 +1,3 @@
// FULL_JDK
package test
public abstract class ClassWithTypePExtendsIterableP<P>() : kotlin.collections.MutableIterable<P> {

View File

@@ -1,5 +1,3 @@
// FULL_JDK
package test
public interface HalfSubstitutedTypeParameters {

View File

@@ -1,5 +1,3 @@
// FULL_JDK
package test
public interface SubclassOfCollection<E>: MutableCollection<E> {

View File

@@ -506,9 +506,6 @@ public class KotlinTestUtils {
configuration.put(JVMConfigurationKeys.JDK_HOME, home);
}
}
else if (SystemInfo.IS_AT_LEAST_JAVA9) {
configuration.put(JVMConfigurationKeys.JDK_HOME, new File(System.getProperty("java.home")));
}
else {
JvmContentRootsKt.addJvmClasspathRoots(configuration, PathUtil.getJdkClassesRootsFromCurrentJre());
}

View File

@@ -30,6 +30,7 @@ import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.fileEditor.impl.LoadTextUtil;
import com.intellij.openapi.fileTypes.FileTypeFactory;
import com.intellij.openapi.fileTypes.FileTypeManager;
import com.intellij.openapi.options.SchemesManagerFactory;
import com.intellij.openapi.progress.EmptyProgressIndicator;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.progress.impl.CoreProgressManager;
@@ -103,6 +104,7 @@ public abstract class KtParsingTestCase extends KtPlatformLiteFixture {
myFileFactory = new PsiFileFactoryImpl(myPsiManager);
MutablePicoContainer appContainer = getApplication().getPicoContainer();
registerComponentInstance(appContainer, MessageBus.class, MessageBusFactory.newMessageBus(getApplication()));
registerComponentInstance(appContainer, SchemesManagerFactory.class, new MockSchemesManagerFactory());
final MockEditorFactory editorFactory = new MockEditorFactory();
registerComponentInstance(appContainer, EditorFactory.class, editorFactory);
registerComponentInstance(appContainer, FileDocumentManager.class, new MockFileDocumentManagerImpl(new Function<CharSequence, Document>() {
@@ -122,7 +124,6 @@ public abstract class KtParsingTestCase extends KtPlatformLiteFixture {
myProject.registerService(PsiManager.class, myPsiManager);
this.registerExtensionPoint(FileTypeFactory.FILE_TYPE_FACTORY_EP, FileTypeFactory.class);
registerExtensionPoint(MetaLanguage.EP_NAME, MetaLanguage.class);
for (ParserDefinition definition : myDefinitions) {
addExplicitExtension(LanguageParserDefinitions.INSTANCE, definition.getFileNodeType().getLanguage(), definition);

View File

@@ -37,7 +37,6 @@ import junit.framework.TestCase;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.types.FlexibleTypeImpl;
import org.jetbrains.kotlin.utils.ExceptionUtilsKt;
import org.junit.Assert;
@@ -98,10 +97,10 @@ public abstract class KtUsefulTestCase extends TestCase {
testName = new File(testName).getName(); // in case the test name contains file separators
myTempDir = new File(ORIGINAL_TEMP_DIR, TEMP_DIR_MARKER + testName).getPath();
FileUtil.resetCanonicalTempPathCache(myTempDir);
boolean isStressTest = isStressTest();
ApplicationInfoImpl.setInStressTest(isStressTest);
boolean isPerformanceTest = isPerformanceTest();
ApplicationInfoImpl.setInPerformanceTest(isPerformanceTest);
// turn off Disposer debugging for performance tests
oldDisposerDebug = Disposer.setDebugMode(Disposer.isDebugMode() && !isStressTest);
oldDisposerDebug = Disposer.setDebugMode(Disposer.isDebugMode() && !isPerformanceTest);
}
@Override
@@ -453,29 +452,8 @@ public abstract class KtUsefulTestCase extends TestCase {
}
}
private static boolean isPerformanceTest(@Nullable String testName, @Nullable String className) {
return testName != null && testName.contains("Performance") ||
className != null && className.contains("Performance");
}
/**
* @return true for a test which performs A LOT of computations.
* Such test should typically avoid performing expensive checks, e.g. data structure consistency complex validations.
* If you want your test to be treated as "Stress", please mention one of these words in its name: "Stress", "Slow".
* For example: {@code public void testStressPSIFromDifferentThreads()}
*/
private boolean isStressTest() {
return isStressTest(getName(), getClass().getName());
}
private static boolean isStressTest(String testName, String className) {
return isPerformanceTest(testName, className) ||
containsStressWords(testName) ||
containsStressWords(className);
}
private static boolean containsStressWords(@Nullable String name) {
return name != null && (name.contains("Stress") || name.contains("Slow"));
private boolean isPerformanceTest() {
String name = getName();
return name != null && name.contains("Performance") || getClass().getName().contains("Performance");
}
}

View File

@@ -15,7 +15,6 @@
*/
package org.jetbrains.kotlin.test.testFramework.mock;
import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.util.Computable;
@@ -149,9 +148,4 @@ public class MockPsiDocumentManager extends PsiDocumentManager {
public void reparseFiles(@NotNull Collection<VirtualFile> files, boolean includeOpenFiles) {
throw new UnsupportedOperationException();
}
@Override
public void performLaterWhenAllCommitted(@NotNull Runnable runnable, ModalityState modalityState) {
throw new UnsupportedOperationException();
}
}

View File

@@ -0,0 +1,34 @@
/*
* Copyright 2010-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 org.jetbrains.kotlin.test.testFramework.mock;
import com.intellij.openapi.components.RoamingType;
import com.intellij.openapi.options.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class MockSchemesManagerFactory extends SchemesManagerFactory {
private static final SchemesManager EMPTY = new EmptySchemesManager();
@Override
protected <T extends Scheme, E extends ExternalizableScheme> SchemesManager<T, E> create(@NotNull String directoryName,
@NotNull SchemeProcessor<E> processor,
@NotNull RoamingType roamingType,
@Nullable String presentableName) {
//noinspection unchecked
return EMPTY;
}
}

View File

@@ -1433,6 +1433,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
doTest(fileName);
}
@TestMetadata("immutableRemove.kt")
public void testImmutableRemove() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/builtinStubMethods/immutableRemove.kt");
doTest(fileName);
}
@TestMetadata("implementationInTrait.kt")
public void testImplementationInTrait() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/builtinStubMethods/implementationInTrait.kt");
@@ -15892,6 +15898,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
doTest(fileName);
}
@TestMetadata("javaParametersHaveNoNames.kt")
public void testJavaParametersHaveNoNames() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/reflection/parameters/javaParametersHaveNoNames.kt");
doTest(fileName);
}
@TestMetadata("kinds.kt")
public void testKinds() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/reflection/parameters/kinds.kt");

View File

@@ -138,21 +138,6 @@ public class BlackBoxWithJava8CodegenTestGenerated extends AbstractBlackBoxCodeg
doTest(fileName);
}
@TestMetadata("compiler/testData/codegen/java8/box/builtinStubMethods")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class BuiltinStubMethods extends AbstractBlackBoxCodegenTest {
public void testAllFilesPresentInBuiltinStubMethods() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/java8/box/builtinStubMethods"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.ANY, true);
}
@TestMetadata("immutableRemove.kt")
public void testImmutableRemove() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/java8/box/builtinStubMethods/immutableRemove.kt");
doTest(fileName);
}
}
@TestMetadata("compiler/testData/codegen/java8/box/delegationBy")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
@@ -622,20 +607,5 @@ public class BlackBoxWithJava8CodegenTestGenerated extends AbstractBlackBoxCodeg
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/java8/box/reflection/synthesizedParameterNames.kt");
doTest(fileName);
}
@TestMetadata("compiler/testData/codegen/java8/box/reflection/parameters")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class Parameters extends AbstractBlackBoxCodegenTest {
public void testAllFilesPresentInParameters() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/java8/box/reflection/parameters"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.ANY, true);
}
@TestMetadata("javaParametersHaveDefaultNames.kt")
public void testJavaParametersHaveDefaultNames() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/java8/box/reflection/parameters/javaParametersHaveDefaultNames.kt");
doTest(fileName);
}
}
}
}

View File

@@ -1433,6 +1433,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
doTest(fileName);
}
@TestMetadata("immutableRemove.kt")
public void testImmutableRemove() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/builtinStubMethods/immutableRemove.kt");
doTest(fileName);
}
@TestMetadata("implementationInTrait.kt")
public void testImplementationInTrait() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/builtinStubMethods/implementationInTrait.kt");
@@ -15892,6 +15898,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
doTest(fileName);
}
@TestMetadata("javaParametersHaveNoNames.kt")
public void testJavaParametersHaveNoNames() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/reflection/parameters/javaParametersHaveNoNames.kt");
doTest(fileName);
}
@TestMetadata("kinds.kt")
public void testKinds() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/reflection/parameters/kinds.kt");

View File

@@ -24,11 +24,10 @@ import org.jetbrains.kotlin.config.LanguageVersion
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
import org.jetbrains.kotlin.utils.addIfNotNull
import org.junit.Assert
import org.xml.sax.Attributes
import org.xml.sax.helpers.DefaultHandler
import org.w3c.dom.Element
import java.io.File
import java.util.*
import javax.xml.parsers.SAXParserFactory
import javax.xml.parsers.DocumentBuilderFactory
class KotlinVersionsTest : KtUsefulTestCase() {
fun testVersionsAreConsistent() {
@@ -67,7 +66,7 @@ class KotlinVersionsTest : KtUsefulTestCase() {
)
versions.add(
loadValueFromPomXml("libraries/pom.xml", listOf("project", "version"))
loadValueFromPomXml("libraries/pom.xml", listOf("version"))
?.toVersion("version in pom.xml")
?: error("No version in libraries/pom.xml")
)
@@ -91,8 +90,8 @@ class KotlinVersionsTest : KtUsefulTestCase() {
FileUtil.processFilesRecursively(File("libraries"), Processor { file ->
if (file.name == "pom.xml") {
if (loadValueFromPomXml(file.path, listOf("project", "parent", "artifactId")) == "kotlin-project") {
val version = loadValueFromPomXml(file.path, listOf("project", "parent", "version"))
if (loadValueFromPomXml(file.path, listOf("parent", "artifactId")) == "kotlin-project") {
val version = loadValueFromPomXml(file.path, listOf("version"))
?: error("No version found in pom.xml at $file")
poms.add(Pom(file.path, version))
}
@@ -116,29 +115,12 @@ class KotlinVersionsTest : KtUsefulTestCase() {
private fun loadValueFromPomXml(filePath: String, query: List<String>): String? {
assert(filePath.endsWith("pom.xml")) { filePath }
var result: String? = null
val docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder()
val input = docBuilder.parse(File(filePath).inputStream())
SAXParserFactory.newInstance().newSAXParser().parse(File(filePath), object : DefaultHandler() {
val currentPath = mutableListOf<String>()
override fun startElement(uri: String, localName: String, qName: String, attributes: Attributes) {
currentPath.add(qName)
}
override fun endElement(uri: String, localName: String, qName: String) {
assert(currentPath.lastOrNull() == qName) { "Invalid XML at $filePath: mismatched tag '$qName'" }
currentPath.removeAt(currentPath.lastIndex)
}
override fun characters(ch: CharArray, start: Int, length: Int) {
if (currentPath == query) {
assert(result == null) { "More than one value found for $query in $filePath" }
result = String(ch, start, length).trim()
}
}
})
return result
return query.fold(input.documentElement) { element, tagName ->
element?.getElementsByTagName(tagName)?.item(0) as? Element
}?.textContent
}
private fun Collection<Any>.areEqual(): Boolean = all(first()::equals)

View File

@@ -28,7 +28,6 @@ import org.jetbrains.kotlin.android.folding.AbstractAndroidResourceFoldingTest
import org.jetbrains.kotlin.android.intention.AbstractAndroidIntentionTest
import org.jetbrains.kotlin.android.intention.AbstractAndroidResourceIntentionTest
import org.jetbrains.kotlin.android.lint.AbstractKotlinLintTest
import org.jetbrains.kotlin.android.parcel.AbstractParcelBytecodeListingTest
import org.jetbrains.kotlin.android.quickfix.AbstractAndroidLintQuickfixTest
import org.jetbrains.kotlin.android.quickfix.AbstractAndroidQuickFixMultiFileTest
import org.jetbrains.kotlin.asJava.AbstractCompilerLightClassTest
@@ -1250,10 +1249,6 @@ fun main(args: Array<String>) {
testClass<AbstractAndroidBytecodeShapeTest> {
model("codegen/bytecodeShape", recursive = false, extension = null)
}
testClass<AbstractParcelBytecodeListingTest> {
model("parcel/codegen")
}
}
testGroup("plugins/plugins-tests/tests", "plugins/annotation-collector/testData") {

View File

@@ -16,16 +16,11 @@
package org.jetbrains.kotlin.idea.highlighter
import com.intellij.codeHighlighting.RainbowHighlighter
import com.intellij.lang.annotation.AnnotationHolder
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.editor.colors.EditorColorsManager
import com.intellij.openapi.util.TextRange
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.idea.KotlinLanguage
import org.jetbrains.kotlin.kdoc.parser.KDocKnownTag
import org.jetbrains.kotlin.kdoc.psi.impl.KDocLink
import org.jetbrains.kotlin.kdoc.psi.impl.KDocTag
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.KtExpressionWithLabel
import org.jetbrains.kotlin.psi.KtLambdaExpression
@@ -38,7 +33,7 @@ internal class BeforeResolveHighlightingVisitor(holder: AnnotationHolder) : High
override fun visitElement(element: PsiElement) {
val elementType = element.node.elementType
val attributes = when {
element is KDocLink && !willApplyRainbowHighlight(element) -> KotlinHighlightingColors.KDOC_LINK
element is KDocLink -> KotlinHighlightingColors.KDOC_LINK
elementType in KtTokens.SOFT_KEYWORDS -> {
when (elementType) {
@@ -53,14 +48,6 @@ internal class BeforeResolveHighlightingVisitor(holder: AnnotationHolder) : High
createInfoAnnotation(element, null).textAttributes = attributes
}
private fun willApplyRainbowHighlight(element: KDocLink): Boolean {
if (!RainbowHighlighter.isRainbowEnabledWithInheritance(EditorColorsManager.getInstance().globalScheme, KotlinLanguage.INSTANCE)) {
return false
}
// Can't use resolve because it will access indices
return (element.parent as? KDocTag)?.knownTag == KDocKnownTag.PARAM
}
override fun visitLambdaExpression(lambdaExpression: KtLambdaExpression) {
if (ApplicationManager.getApplication().isUnitTestMode) return

View File

@@ -16,27 +16,27 @@
package org.jetbrains.kotlin.idea.modules
import com.intellij.codeInsight.daemon.impl.analysis.JavaModuleGraphUtil
//import com.intellij.codeInsight.daemon.impl.analysis.JavaModuleGraphUtil
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiJavaModule
//import com.intellij.psi.PsiJavaModule
import com.intellij.psi.PsiManager
import com.intellij.psi.impl.light.LightJavaModule
//import com.intellij.psi.impl.light.LightJavaModule
import org.jetbrains.annotations.NotNull
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleResolver
class IdeJavaModuleResolver(project: Project) : JavaModuleResolver {
private val psiManager = PsiManager.getInstance(project)
/*private val psiManager = PsiManager.getInstance(project)
private fun findJavaModule(file: VirtualFile): PsiJavaModule? {
return psiManager.findFile(file)?.let(JavaModuleGraphUtil::findDescriptorByElement)
}
}*/
override fun checkAccessibility(
fileFromOurModule: VirtualFile?, referencedFile: VirtualFile, referencedPackage: FqName?
): JavaModuleResolver.AccessError? {
val ourModule = fileFromOurModule?.let(this::findJavaModule)
/*val ourModule = fileFromOurModule?.let(this::findJavaModule)
val theirModule = this.findJavaModule(referencedFile)
// If we're both in the unnamed module, it's OK, no error should be reported
@@ -58,13 +58,13 @@ class IdeJavaModuleResolver(project: Project) : JavaModuleResolver {
val fqName = referencedPackage?.asString() ?: return null
if (!exports(theirModule, fqName, ourModule)) {
return JavaModuleResolver.AccessError.ModuleDoesNotExportPackage(theirModule.name)
}
}*/
return null
}
// Returns whether or not [source] exports [packageName] to [target]
private fun exports(source: PsiJavaModule, packageName: String, target: PsiJavaModule?): Boolean {
/*private fun exports(source: PsiJavaModule, packageName: String, target: PsiJavaModule?): Boolean {
if (source is LightJavaModule) {
return true
}
@@ -76,5 +76,5 @@ class IdeJavaModuleResolver(project: Project) : JavaModuleResolver {
return source.exports.any { statement ->
statement.moduleNames.isEmpty() && statement.packageName == packageName
}
}
}*/
}

View File

@@ -162,9 +162,4 @@ val KtElement.languageVersionSettings: LanguageVersionSettings
}
val KtElement.jvmTarget: JvmTarget
get() {
if (ServiceManager.getService(containingKtFile.project, ProjectFileIndex::class.java) == null) {
return JvmTarget.DEFAULT
}
return ModuleUtilCore.findModuleForPsiElement(this)?.targetPlatform?.version as? JvmTarget ?: JvmTarget.DEFAULT
}
get() = ModuleUtilCore.findModuleForPsiElement(this)?.targetPlatform?.version as? JvmTarget ?: JvmTarget.DEFAULT

View File

@@ -5,7 +5,7 @@
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="gradle-and-groovy-plugin" level="project" />
<orderEntry type="library" exported="" name="android-plugin" level="project" />

View File

@@ -25,5 +25,6 @@
<orderEntry type="library" name="kotlin-reflect" level="project" />
<orderEntry type="module" module-name="light-classes" />
<orderEntry type="library" scope="PROVIDED" name="dx-android" level="project" />
<orderEntry type="module" module-name="android-annotations" scope="TEST" />
</component>
</module>

View File

@@ -20,10 +20,9 @@ import com.android.SdkConstants
import com.android.resources.ResourceType.*
import com.android.tools.idea.AndroidPsiUtils.ResourceReferenceType.FRAMEWORK
import com.android.tools.idea.rendering.GutterIconRenderer
import com.android.tools.idea.res.ResourceHelper
import com.android.tools.idea.rendering.ResourceHelper
import com.intellij.lang.annotation.AnnotationHolder
import com.intellij.lang.annotation.Annotator
import com.intellij.openapi.module.ModuleUtilCore
import com.intellij.psi.PsiElement
import org.jetbrains.android.AndroidColorAnnotator
import org.jetbrains.android.facet.AndroidFacet

View File

@@ -23,10 +23,9 @@ import com.android.ide.common.resources.ResourceRepository;
import com.android.ide.common.resources.ResourceResolver;
import com.android.resources.ResourceType;
import com.android.tools.idea.configurations.Configuration;
import com.android.tools.idea.res.AppResourceRepository;
import com.android.tools.idea.res.LocalResourceRepository;
import com.android.tools.idea.res.ResourceHelper;
import com.android.tools.idea.ui.resourcechooser.ColorPicker;
import com.android.tools.idea.rendering.AppResourceRepository;
import com.android.tools.idea.rendering.LocalResourceRepository;
import com.android.tools.idea.rendering.ResourceHelper;
import com.android.utils.XmlUtils;
import com.google.common.base.Charsets;
import com.google.common.io.Files;
@@ -47,8 +46,8 @@ import com.intellij.psi.xml.XmlAttributeValue;
import com.intellij.psi.xml.XmlTag;
import com.intellij.util.ui.ColorIcon;
import com.intellij.util.ui.EmptyIcon;
import com.intellij.util.ui.JBUI;
import org.jetbrains.android.facet.AndroidFacet;
import org.jetbrains.android.uipreview.ColorPicker;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.w3c.dom.Document;
@@ -61,15 +60,14 @@ import java.awt.*;
import java.io.File;
import static com.android.SdkConstants.*;
import static com.android.SdkConstants.ANDROID_URI;
import static com.android.SdkConstants.ATTR_DRAWABLE;
import static com.android.tools.idea.uibuilder.property.renderer.NlDefaultRenderer.ICON_SIZE;
import static org.jetbrains.android.AndroidColorAnnotator.pickLayoutFile;
/**
* Contains copied privates from AndroidColorAnnotator, so we could use them for Kotlin AndroidResourceReferenceAnnotator
*/
public class ResourceReferenceAnnotatorUtil {
private static final int ICON_SIZE = 8;
@Nullable
public static File pickBitmapFromXml(@NotNull File file, @NotNull ResourceResolver resourceResolver, @NotNull Project project) {
try {
@@ -195,8 +193,8 @@ public class ResourceReferenceAnnotatorUtil {
@NotNull
@Override
public Icon getIcon() {
Color color = getCurrentColor();
return JBUI.scale(color == null ? EmptyIcon.create(ICON_SIZE) : new ColorIcon(ICON_SIZE, color));
final Color color = getCurrentColor();
return color == null ? EmptyIcon.create(ICON_SIZE) : new ColorIcon(ICON_SIZE, color);
}
@Nullable

View File

@@ -57,9 +57,7 @@ class AndroidDexerImpl(val project: Project) : AndroidDexer {
for (module in ModuleManager.getInstance(project).modules) {
val androidFacet = AndroidFacet.getInstance(module) ?: continue
val sdkData = androidFacet.sdkData ?: continue
val latestBuildTool = sdkData.getLatestBuildTool(/* allowPreview = */ false)
?: sdkData.getLatestBuildTool(/* allowPreview = */ true)
?: continue
val latestBuildTool = sdkData.getLatestBuildTool() ?: continue
val dxJar = File(latestBuildTool.location, "lib/dx.jar")
if (dxJar.exists()) {

View File

@@ -21,8 +21,8 @@ import com.android.ide.common.resources.configuration.FolderConfiguration
import com.android.ide.common.resources.configuration.LocaleQualifier
import com.android.resources.ResourceType
import com.android.tools.idea.folding.AndroidFoldingSettings
import com.android.tools.idea.res.AppResourceRepository
import com.android.tools.idea.res.LocalResourceRepository
import com.android.tools.idea.rendering.AppResourceRepository
import com.android.tools.idea.rendering.LocalResourceRepository
import com.intellij.lang.ASTNode
import com.intellij.lang.folding.FoldingBuilderEx
import com.intellij.lang.folding.FoldingDescriptor

View File

@@ -16,7 +16,6 @@
package org.jetbrains.kotlin.android.inspection
import com.android.resources.ResourceFolderType
import com.android.resources.ResourceType
import com.intellij.codeInsight.daemon.QuickFixActionRegistrar
import com.intellij.codeInsight.quickfix.UnresolvedReferenceQuickFixProvider
@@ -50,10 +49,7 @@ class KotlinAndroidResourceQuickFixProvider : UnresolvedReferenceQuickFixProvide
registrar.register(CreateValueResourceQuickFix(facet, resourceType, info.fieldName, contextFile, true))
}
if (AndroidResourceUtil.XML_FILE_RESOURCE_TYPES.contains(resourceType)) {
val resourceFolderType = ResourceFolderType.getTypeByName(resourceType.getName());
if (resourceFolderType != null) {
registrar.register(CreateFileResourceQuickFix(facet, resourceFolderType, info.fieldName, contextFile, true))
}
registrar.register(CreateFileResourceQuickFix(facet, resourceType, info.fieldName, contextFile, true))
}
}

View File

@@ -17,7 +17,6 @@
package org.jetbrains.kotlin.android.intention
import com.intellij.openapi.util.Key
import com.intellij.openapi.vfs.VirtualFile
val CREATE_XML_RESOURCE_PARAMETERS_NAME_KEY = Key<String>("CREATE_XML_RESOURCE_PARAMETERS_NAME_KEY")
@@ -25,5 +24,4 @@ val CREATE_XML_RESOURCE_PARAMETERS_NAME_KEY = Key<String>("CREATE_XML_RESOURCE_P
class CreateXmlResourceParameters(val name: String,
val value: String,
val fileName: String,
val resourceDirectory: VirtualFile,
val directoryNames: List<String>)

View File

@@ -26,14 +26,12 @@ import com.intellij.openapi.command.undo.UndoUtil
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.module.Module
import com.intellij.openapi.ui.Messages
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.*
import com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.android.actions.CreateXmlResourceDialog
import org.jetbrains.android.facet.AndroidFacet
import org.jetbrains.android.util.AndroidBundle
import org.jetbrains.android.util.AndroidResourceUtil
import org.jetbrains.android.util.AndroidUtils
import org.jetbrains.kotlin.builtins.isExtensionFunctionType
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.idea.caches.resolve.analyze
@@ -58,7 +56,6 @@ class KotlinAndroidAddStringResource : SelfTargetingIntention<KtLiteralStringTem
private val GET_STRING_METHOD = "getString"
private val EXTRACT_RESOURCE_DIALOG_TITLE = "Extract Resource"
private val PACKAGE_NOT_FOUND_ERROR = "package.not.found.error"
private val RESOURCE_DIR_ERROR = "check.resource.dir.error"
}
override fun startInWriteAction(): Boolean = false
@@ -92,10 +89,10 @@ class KotlinAndroidAddStringResource : SelfTargetingIntention<KtLiteralStringTem
return
}
val parameters = getCreateXmlResourceParameters(facet.module, element, file.virtualFile) ?: return
val parameters = getCreateXmlResourceParameters(facet.module, element) ?: return
runWriteAction {
if (!AndroidResourceUtil.createValueResource(project, parameters.resourceDirectory, parameters.name, ResourceType.STRING,
if (!AndroidResourceUtil.createValueResource(facet.module, parameters.name, ResourceType.STRING,
parameters.fileName, parameters.directoryNames, parameters.value)) {
return@runWriteAction
}
@@ -106,14 +103,13 @@ class KotlinAndroidAddStringResource : SelfTargetingIntention<KtLiteralStringTem
}
}
private fun getCreateXmlResourceParameters(module: Module, element: KtLiteralStringTemplateEntry,
contextFile: VirtualFile): CreateXmlResourceParameters? {
private fun getCreateXmlResourceParameters(module: Module, element: KtLiteralStringTemplateEntry): CreateXmlResourceParameters? {
val stringValue = element.text
val showDialog = !ApplicationManager.getApplication().isUnitTestMode
val resourceName = element.getUserData(CREATE_XML_RESOURCE_PARAMETERS_NAME_KEY)
val dialog = CreateXmlResourceDialog(module, ResourceType.STRING, resourceName, stringValue, true, null, contextFile)
val dialog = CreateXmlResourceDialog(module, ResourceType.STRING, resourceName, stringValue, true)
dialog.title = EXTRACT_RESOURCE_DIALOG_TITLE
if (showDialog) {
if (!dialog.showAndGet()) {
@@ -124,16 +120,9 @@ class KotlinAndroidAddStringResource : SelfTargetingIntention<KtLiteralStringTem
dialog.close(0)
}
val resourceDirectory = dialog.resourceDirectory
if (resourceDirectory == null) {
AndroidUtils.reportError(module.project, AndroidBundle.message(RESOURCE_DIR_ERROR, module))
return null
}
return CreateXmlResourceParameters(dialog.resourceName,
dialog.value,
dialog.fileName,
resourceDirectory,
dialog.dirNames)
}
@@ -243,4 +232,4 @@ class KotlinAndroidAddStringResource : SelfTargetingIntention<KtLiteralStringTem
private fun ClassifierDescriptor.isStrictSubclassOf(className: String) = defaultType.constructor.supertypes.any {
it.constructor.declarationDescriptor?.isSubclassOf(className) ?: false
}
}
}

View File

@@ -16,7 +16,7 @@
package org.jetbrains.kotlin.android;
import com.android.sdklib.IAndroidTarget;
import com.android.tools.idea.res.ResourceHelper;
import com.android.tools.idea.rendering.ResourceHelper;
import com.android.tools.idea.startup.ExternalAnnotationsSupport;
import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.application.ex.PathManagerEx;

View File

@@ -17,7 +17,7 @@
package org.jetbrains.kotlin.android;
import com.android.SdkConstants;
import com.android.tools.idea.rendering.RenderSecurityManager;
import com.android.ide.common.rendering.RenderSecurityManager;
import com.android.tools.idea.startup.AndroidCodeStyleSettingsModifier;
import com.intellij.analysis.AnalysisScope;
import com.intellij.codeInspection.GlobalInspectionTool;

View File

@@ -29,14 +29,14 @@ import org.jetbrains.kotlin.idea.test.KotlinTestImportFilter;
public abstract class AbstractAndroidQuickFixMultiFileTest extends AbstractQuickFixMultiFileTest {
@Override
protected void setUp() {
protected void setUp() throws Exception {
super.setUp();
addAndroidFacet();
Extensions.getRootArea().getExtensionPoint(ImportFilter.EP_NAME).registerExtension(KotlinTestImportFilter.INSTANCE);
}
@Override
protected void tearDown() {
protected void tearDown() throws Exception {
Extensions.getRootArea().getExtensionPoint(ImportFilter.EP_NAME).unregisterExtension(KotlinTestImportFilter.INSTANCE);
AndroidFacet facet = FacetManager.getInstance(myModule).getFacetByType(AndroidFacet.getFacetType().getId());
FacetUtil.deleteFacet(facet);
@@ -49,6 +49,12 @@ public abstract class AbstractAndroidQuickFixMultiFileTest extends AbstractQuick
super.doTestWithExtraFile(beforeFileName);
}
@Override
protected void doTestWithoutExtraFile(String beforeFileName) throws Exception {
addManifest();
super.doTestWithoutExtraFile(beforeFileName);
}
private void addAndroidFacet() {
FacetManager facetManager = FacetManager.getInstance(myModule);
AndroidFacet facet = facetManager.createFacet(AndroidFacet.getFacetType(), "Android", null);
@@ -64,6 +70,6 @@ public abstract class AbstractAndroidQuickFixMultiFileTest extends AbstractQuick
}
private void addManifest() throws Exception {
myFixture.configureByFile("idea/testData/android/AndroidManifest.xml");
configureByFile("idea/testData/android/AndroidManifest.xml");
}
}

View File

@@ -413,7 +413,6 @@ fun ImportableFqNameClassifier.isImportableDescriptorImported(descriptor: Declar
fun OffsetMap.tryGetOffset(key: OffsetKey): Int? {
try {
if (!containsOffset(key)) return null
return getOffset(key).takeIf { it != -1 } // prior to IDEA 2016.3 getOffset() returned -1 if not found, now it throws exception
}
catch(e: Exception) {

View File

@@ -50,6 +50,8 @@ class KotlinCompletionContributor : CompletionContributor() {
companion object {
val DEFAULT_DUMMY_IDENTIFIER: String = CompletionUtilCore.DUMMY_IDENTIFIER_TRIMMED + "$" // add '$' to ignore context after the caret
private val STRING_TEMPLATE_AFTER_DOT_REAL_START_OFFSET = OffsetKey.create("STRING_TEMPLATE_AFTER_DOT_REAL_START_OFFSET")
}
init {
@@ -80,6 +82,7 @@ class KotlinCompletionContributor : CompletionContributor() {
val prefix = tokenBefore.text.substring(0, offset - tokenBefore.startOffset)
context.dummyIdentifier = "{" + expression.text + prefix + CompletionUtilCore.DUMMY_IDENTIFIER_TRIMMED + "}"
context.offsetMap.addOffset(CompletionInitializationContext.START_OFFSET, expression.startOffset)
context.offsetMap.addOffset(STRING_TEMPLATE_AFTER_DOT_REAL_START_OFFSET, offset + 1)
return
}
}
@@ -238,13 +241,8 @@ class KotlinCompletionContributor : CompletionContributor() {
val expression = (position.parent as KtBlockStringTemplateEntry).expression
if (expression is KtDotQualifiedExpression) {
val correctedPosition = (expression.selectorExpression as KtNameReferenceExpression).firstChild
// Workaround for KT-16848
// ex:
// expression: some.IntellijIdeaRulezzz
// correctedOffset: ^
// expression: some.funcIntellijIdeaRulezzz
// correctedOffset ^
val correctedOffset = correctedPosition.endOffset - CompletionUtilCore.DUMMY_IDENTIFIER_TRIMMED.length
val context = position.getUserData(CompletionContext.COMPLETION_CONTEXT_KEY)!!
val correctedOffset = context.offsetMap.getOffset(STRING_TEMPLATE_AFTER_DOT_REAL_START_OFFSET)
val correctedParameters = parameters.withPosition(correctedPosition, correctedOffset)
doComplete(correctedParameters, toFromOriginalFileMapper, result,
lookupElementPostProcessor = { wrapLookupElementForStringTemplateAfterDotCompletion(it) })

View File

@@ -22,6 +22,8 @@ import com.intellij.codeInsight.lookup.LookupElementPresentation
import com.intellij.codeInsight.lookup.LookupEvent
import com.intellij.codeInsight.lookup.LookupManager
import com.intellij.codeInsight.lookup.impl.LookupImpl
import com.intellij.openapi.application.Result
import com.intellij.openapi.command.WriteCommandAction
import com.intellij.testFramework.fixtures.JavaCodeInsightTestFixture
import org.jetbrains.kotlin.idea.completion.test.ExpectedCompletionUtils
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
@@ -115,7 +117,14 @@ abstract class CompletionHandlerTestBase() : KotlinLightCodeInsightFixtureTestCa
}
lookup.focusDegree = LookupImpl.FocusDegree.FOCUSED
if (LookupEvent.isSpecialCompletionChar(completionChar)) {
lookup.finishLookup(completionChar)
(object : WriteCommandAction.Simple<Any>(project) {
override fun run(result: Result<Any>) {
run()
}
override fun run() {
lookup.finishLookup(completionChar)
}
}).execute().throwException()
}
else {
fixture.type(completionChar)

View File

@@ -19,14 +19,14 @@ package org.jetbrains.kotlin.idea.core.script
import com.intellij.openapi.components.service
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.vfs.VirtualFileWithId
import com.intellij.util.io.DataInputOutputUtil.readSeq
import com.intellij.util.io.DataInputOutputUtil.writeSeq
import com.intellij.util.io.DataInputOutputUtil.*
import com.intellij.util.io.IOUtil.readUTF
import com.intellij.util.io.IOUtil.writeUTF
import org.jetbrains.kotlin.idea.caches.FileAttributeService
import java.io.DataInput
import java.io.DataOutput
import java.io.File
import java.io.IOException
import kotlin.script.dependencies.ScriptDependencies
object ScriptDependenciesFileAttribute {
@@ -104,4 +104,22 @@ private fun <T : Any> DataOutput.writeNullable(nullable: T?, writeT: DataOutput.
private fun <T : Any> DataInput.readNullable(readT: DataInput.() -> T): T? {
val hasValue = readBoolean()
return if (hasValue) readT() else null
}
@Throws(IOException::class)
private fun <T> readSeq(`in`: DataInput, readElement: () -> T): List<T> {
val size = readINT(`in`)
val result = ArrayList<T>(size)
for (i in 0 until size) {
result.add(readElement())
}
return result
}
@Throws(IOException::class)
private fun <T> writeSeq(out: DataOutput, collection: Collection<T>, writeElement: (T) -> Unit) {
writeINT(out, collection.size)
for (t in collection) {
writeElement(t)
}
}

View File

@@ -50,8 +50,6 @@ abstract class KotlinLightCodeInsightFixtureTestCase : KotlinLightCodeInsightFix
protected val module: Module get() = myFixture.module
protected open val captureExceptions = true
override fun setUp() {
super.setUp()
(StartupManager.getInstance(project) as StartupManagerImpl).runPostStartupActivities()
@@ -64,14 +62,13 @@ abstract class KotlinLightCodeInsightFixtureTestCase : KotlinLightCodeInsightFix
invalidateLibraryCache(project)
if (captureExceptions) {
LoggedErrorProcessor.setNewInstance(object : LoggedErrorProcessor() {
override fun processError(message: String?, t: Throwable?, details: Array<out String>?, logger: Logger) {
exceptions.addIfNotNull(t)
super.processError(message, t, details, logger)
}
})
}
LoggedErrorProcessor.setNewInstance(object : LoggedErrorProcessor() {
override fun processError(message: String?, t: Throwable?, details: Array<out String>?, logger: Logger) {
exceptions.addIfNotNull(t)
super.processError(message, t, details, logger)
}
})
CodeInsightTestCase.fixTemplates()
}
@@ -122,9 +119,6 @@ abstract class KotlinLightCodeInsightFixtureTestCase : KotlinLightCodeInsightFix
else if (InTextDirectivesUtils.isDirectiveDefined(fileText, "RUNTIME_WITH_KOTLIN_TEST")) {
return KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE_WITH_KOTLIN_TEST
}
else if (InTextDirectivesUtils.isDirectiveDefined(fileText, "RUNTIME_WITH_FULL_JDK")) {
return KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE_FULL_JDK
}
else if (InTextDirectivesUtils.isDirectiveDefined(fileText, "RUNTIME") ||
InTextDirectivesUtils.isDirectiveDefined(fileText, "WITH_RUNTIME")) {
return KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE

View File

@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.idea.test
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.editor.Document
import com.intellij.openapi.module.Module
import com.intellij.openapi.project.Project
@@ -81,7 +82,8 @@ fun KtFile.dumpTextWithErrors(): String {
return header + text
}
fun closeAndDeleteProject() = LightPlatformTestCase.closeAndDeleteProject()
fun closeAndDeleteProject(): Unit =
ApplicationManager.getApplication().runWriteAction { LightPlatformTestCase.closeAndDeleteProject() }
fun doKotlinTearDown(project: Project, runnable: RunnableWithException) {
doKotlinTearDown(project) { runnable.run() }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 B

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 758 B

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 525 B

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 263 B

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 626 B

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 540 B

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 B

After

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 B

After

Width:  |  Height:  |  Size: 627 B

Some files were not shown because too many files have changed in this diff Show More