aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.idea/libraries/asm.xml9
-rw-r--r--.idea/libraries/cli_parser.xml9
-rw-r--r--.idea/libraries/guava.xml9
-rw-r--r--.idea/libraries/intellij_core_analysis.xml9
-rw-r--r--.idea/libraries/jdom.xml9
-rw-r--r--.idea/libraries/kotlin_compiler.xml134
-rw-r--r--.idea/libraries/kotlin_for_upsource.xml47
-rw-r--r--.idea/libraries/kotlin_plugin.xml134
-rw-r--r--.idea/libraries/picocontainer.xml9
-rw-r--r--.idea/libraries/protobuf.xml9
-rw-r--r--.idea/libraries/trove4j.xml9
-rw-r--r--dokka.iml12
-rw-r--r--lib/asm-all.jarbin0 -> 384844 bytes
-rw-r--r--lib/cli-parser-1.1.1.jarbin0 -> 11397 bytes
-rw-r--r--lib/guava-17.0.jarbin0 -> 2243036 bytes
-rw-r--r--lib/intellij-core-analysis.jarbin0 -> 36599525 bytes
-rw-r--r--lib/jdom.jarbin0 -> 155933 bytes
-rw-r--r--lib/kotlin-for-upsource.jarbin0 -> 13512780 bytes
-rw-r--r--lib/markdown.jarbin200832 -> 239956 bytes
-rw-r--r--lib/picocontainer.jarbin0 -> 112635 bytes
-rw-r--r--lib/protobuf-2.5.0-lite.jarbin0 -> 110159 bytes
-rw-r--r--lib/trove4j.jarbin0 -> 578843 bytes
-rw-r--r--src/Analysis/AnalysisEnvironment.kt111
-rw-r--r--src/Analysis/CompilerAPI.kt9
-rw-r--r--src/Analysis/CoreProjectFileIndex.kt97
-rw-r--r--src/Kotlin/ContentBuilder.kt4
-rw-r--r--src/Kotlin/DocumentationBuilder.kt8
-rw-r--r--src/main.kt17
28 files changed, 302 insertions, 343 deletions
diff --git a/.idea/libraries/asm.xml b/.idea/libraries/asm.xml
new file mode 100644
index 00000000..7e0c23e6
--- /dev/null
+++ b/.idea/libraries/asm.xml
@@ -0,0 +1,9 @@
+<component name="libraryTable">
+ <library name="asm">
+ <CLASSES>
+ <root url="jar://$PROJECT_DIR$/lib/asm-all.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+</component> \ No newline at end of file
diff --git a/.idea/libraries/cli_parser.xml b/.idea/libraries/cli_parser.xml
new file mode 100644
index 00000000..5eda5d0e
--- /dev/null
+++ b/.idea/libraries/cli_parser.xml
@@ -0,0 +1,9 @@
+<component name="libraryTable">
+ <library name="cli-parser">
+ <CLASSES>
+ <root url="jar://$PROJECT_DIR$/lib/cli-parser-1.1.1.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+</component> \ No newline at end of file
diff --git a/.idea/libraries/guava.xml b/.idea/libraries/guava.xml
new file mode 100644
index 00000000..f5469d35
--- /dev/null
+++ b/.idea/libraries/guava.xml
@@ -0,0 +1,9 @@
+<component name="libraryTable">
+ <library name="guava">
+ <CLASSES>
+ <root url="jar://$PROJECT_DIR$/lib/guava-17.0.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+</component> \ No newline at end of file
diff --git a/.idea/libraries/intellij_core_analysis.xml b/.idea/libraries/intellij_core_analysis.xml
new file mode 100644
index 00000000..84a9f5ee
--- /dev/null
+++ b/.idea/libraries/intellij_core_analysis.xml
@@ -0,0 +1,9 @@
+<component name="libraryTable">
+ <library name="intellij-core-analysis">
+ <CLASSES>
+ <root url="jar://$PROJECT_DIR$/lib/intellij-core-analysis.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+</component> \ No newline at end of file
diff --git a/.idea/libraries/jdom.xml b/.idea/libraries/jdom.xml
new file mode 100644
index 00000000..54b3420d
--- /dev/null
+++ b/.idea/libraries/jdom.xml
@@ -0,0 +1,9 @@
+<component name="libraryTable">
+ <library name="jdom">
+ <CLASSES>
+ <root url="jar://$PROJECT_DIR$/lib/jdom.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+</component> \ No newline at end of file
diff --git a/.idea/libraries/kotlin_compiler.xml b/.idea/libraries/kotlin_compiler.xml
deleted file mode 100644
index d3199a12..00000000
--- a/.idea/libraries/kotlin_compiler.xml
+++ /dev/null
@@ -1,134 +0,0 @@
-<component name="libraryTable">
- <library name="kotlin-compiler">
- <CLASSES>
- <root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-compiler.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES>
- <root url="file://$PROJECT_DIR$/../kotlin/js/js.tests/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/js/js.dart-ast/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/js/js.translator/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/j2k/tests/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/descriptors/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/runtime.jvm/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/util.runtime/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/serialization/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/serialization.java/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/descriptor.loader.java/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/docs/exPuzzlers/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/idea/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/idea/tests" />
- <root url="file://$PROJECT_DIR$/../kotlin/eval4j/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/grammar/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/cli/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/cli/cli-common/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/util/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/tests" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/backend/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/frontend/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/preloader/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/preloader/instrumentation/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/android-tests/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/android-tests/tests" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/android-tests/android-module/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/frontend.java/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/backend-common/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/jet.as.java.psi/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/integration-tests/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/runtime/target/copied-sources" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kdoc-maven-plugin/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kdoc-maven-plugin/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/src/main/kotlin" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidProject/Lib/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidProject/Android/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kotlinJavaProject/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/target/test-classes/testProject/AndroidProject/Lib/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/target/test-classes/testProject/AndroidProject/Android/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/target/test-classes/testProject/kotlinJavaProject/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-js-tests-junit/src/test/kotlin" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin-test/src/it/test-classpath/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin-test/src/it/test-helloworld/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin-test/target/it/test-classpath/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin-test/target/it/test-helloworld/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/simpleProject/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/additionalJavaSrc/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/additionalJavaSrc/generated" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/target/test-classes/testProject/simpleProject/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/target/test-classes/testProject/additionalJavaSrc/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/target/test-classes/testProject/additionalJavaSrc/generated" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/examples/kotlin-java-example/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/generators/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/generators/tests" />
- <root url="file://$PROJECT_DIR$/../kotlin/jps-plugin/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/jps-plugin/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/jps-plugin/kannotator-jps-plugin-test/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/dependencies/download/asm-src" />
- <root url="file://$PROJECT_DIR$/../kotlin/injector-generator/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/ide-compiler-runner/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/js/js.tests/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/js/js.dart-ast/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/js/js.translator/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/j2k/tests/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/descriptors/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/runtime.jvm/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/util.runtime/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/serialization/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/serialization.java/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/descriptor.loader.java/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/docs/exPuzzlers/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/idea/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/idea/tests" />
- <root url="file://$PROJECT_DIR$/../kotlin/eval4j/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/grammar/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/cli/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/cli/cli-common/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/util/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/tests" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/backend/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/frontend/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/preloader/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/preloader/instrumentation/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/android-tests/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/android-tests/tests" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/android-tests/android-module/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/frontend.java/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/backend-common/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/jet.as.java.psi/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/integration-tests/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/runtime/target/copied-sources" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kdoc-maven-plugin/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kdoc-maven-plugin/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/src/main/kotlin" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidProject/Lib/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidProject/Android/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kotlinJavaProject/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/target/test-classes/testProject/AndroidProject/Lib/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/target/test-classes/testProject/AndroidProject/Android/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/target/test-classes/testProject/kotlinJavaProject/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-js-tests-junit/src/test/kotlin" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin-test/src/it/test-classpath/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin-test/src/it/test-helloworld/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin-test/target/it/test-classpath/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin-test/target/it/test-helloworld/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/simpleProject/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/additionalJavaSrc/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/additionalJavaSrc/generated" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/target/test-classes/testProject/simpleProject/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/target/test-classes/testProject/additionalJavaSrc/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/target/test-classes/testProject/additionalJavaSrc/generated" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/examples/kotlin-java-example/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/generators/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/generators/tests" />
- <root url="file://$PROJECT_DIR$/../kotlin/jps-plugin/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/jps-plugin/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/jps-plugin/kannotator-jps-plugin-test/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/dependencies/download/asm-src" />
- <root url="file://$PROJECT_DIR$/../kotlin/injector-generator/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/ide-compiler-runner/src" />
- </SOURCES>
- </library>
-</component> \ No newline at end of file
diff --git a/.idea/libraries/kotlin_for_upsource.xml b/.idea/libraries/kotlin_for_upsource.xml
new file mode 100644
index 00000000..3ddcc140
--- /dev/null
+++ b/.idea/libraries/kotlin_for_upsource.xml
@@ -0,0 +1,47 @@
+<component name="libraryTable">
+ <library name="kotlin-for-upsource">
+ <CLASSES>
+ <root url="jar://$PROJECT_DIR$/lib/kotlin-for-upsource.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES>
+ <root url="file://$PROJECT_DIR$/../kotlin/ant/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/compiler/backend-common/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/compiler/backend/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/compiler/cli/cli-common/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/compiler/cli/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/compiler/frontend.java/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/compiler/frontend/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/compiler/light-classes/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/compiler/preloader/instrumentation/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/compiler/preloader/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/compiler/serialization/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/compiler/util/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/core/descriptor.loader.java/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/core/descriptors.runtime/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/core/descriptors/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/core/deserialization/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/core/reflection.jvm/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/core/runtime.jvm/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/core/util.runtime/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/generators/injector-generator/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/generators/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/idea/ide-common/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/idea/idea-analysis/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/idea/idea-completion/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/idea/idea-core/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/idea/idea-jps-common/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/idea/idea-test-framework/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/idea/kotlin-android-plugin/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/idea/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/jps-plugin/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/js/js.dart-ast/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/js/js.frontend/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/js/js.inliner/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/js/js.parser/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/js/js.serializer/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/js/js.translator/src" />
+ <root url="file://$PROJECT_DIR$/../kotlin/plugins/android-idea-plugin/src" />
+ </SOURCES>
+ </library>
+</component> \ No newline at end of file
diff --git a/.idea/libraries/kotlin_plugin.xml b/.idea/libraries/kotlin_plugin.xml
deleted file mode 100644
index e2975946..00000000
--- a/.idea/libraries/kotlin_plugin.xml
+++ /dev/null
@@ -1,134 +0,0 @@
-<component name="libraryTable">
- <library name="kotlin-plugin">
- <CLASSES>
- <root url="jar://$KOTLIN_PLUGIN$/lib/kotlin-plugin.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES>
- <root url="file://$PROJECT_DIR$/../kotlin/js/js.tests/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/js/js.dart-ast/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/js/js.translator/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/j2k/tests/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/descriptors/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/runtime.jvm/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/util.runtime/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/serialization/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/serialization.java/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/descriptor.loader.java/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/docs/exPuzzlers/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/idea/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/idea/tests" />
- <root url="file://$PROJECT_DIR$/../kotlin/eval4j/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/grammar/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/cli/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/cli/cli-common/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/util/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/tests" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/backend/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/frontend/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/preloader/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/preloader/instrumentation/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/android-tests/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/android-tests/tests" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/android-tests/android-module/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/frontend.java/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/backend-common/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/jet.as.java.psi/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/integration-tests/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/runtime/target/copied-sources" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kdoc-maven-plugin/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kdoc-maven-plugin/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/src/main/kotlin" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidProject/Lib/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidProject/Android/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kotlinJavaProject/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/target/test-classes/testProject/AndroidProject/Lib/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/target/test-classes/testProject/AndroidProject/Android/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/target/test-classes/testProject/kotlinJavaProject/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-js-tests-junit/src/test/kotlin" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin-test/src/it/test-classpath/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin-test/src/it/test-helloworld/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin-test/target/it/test-classpath/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin-test/target/it/test-helloworld/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/simpleProject/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/additionalJavaSrc/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/additionalJavaSrc/generated" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/target/test-classes/testProject/simpleProject/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/target/test-classes/testProject/additionalJavaSrc/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/target/test-classes/testProject/additionalJavaSrc/generated" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/examples/kotlin-java-example/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/generators/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/generators/tests" />
- <root url="file://$PROJECT_DIR$/../kotlin/jps-plugin/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/jps-plugin/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/jps-plugin/kannotator-jps-plugin-test/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/dependencies/download/asm-src" />
- <root url="file://$PROJECT_DIR$/../kotlin/injector-generator/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/ide-compiler-runner/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/js/js.tests/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/js/js.dart-ast/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/js/js.translator/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/j2k/tests/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/descriptors/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/runtime.jvm/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/util.runtime/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/serialization/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/serialization.java/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/core/descriptor.loader.java/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/docs/exPuzzlers/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/idea/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/idea/tests" />
- <root url="file://$PROJECT_DIR$/../kotlin/eval4j/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/grammar/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/cli/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/cli/cli-common/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/util/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/tests" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/backend/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/frontend/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/preloader/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/preloader/instrumentation/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/android-tests/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/android-tests/tests" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/android-tests/android-module/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/frontend.java/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/backend-common/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/jet.as.java.psi/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/compiler/integration-tests/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/runtime/target/copied-sources" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kdoc-maven-plugin/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kdoc-maven-plugin/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/src/main/kotlin" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidProject/Lib/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidProject/Android/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kotlinJavaProject/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/target/test-classes/testProject/AndroidProject/Lib/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/target/test-classes/testProject/AndroidProject/Android/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin/target/test-classes/testProject/kotlinJavaProject/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-js-tests-junit/src/test/kotlin" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin-test/src/it/test-classpath/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin-test/src/it/test-helloworld/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin-test/target/it/test-classpath/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-maven-plugin-test/target/it/test-helloworld/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/simpleProject/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/additionalJavaSrc/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/additionalJavaSrc/generated" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/target/test-classes/testProject/simpleProject/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/target/test-classes/testProject/additionalJavaSrc/src/main/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/tools/kotlin-gradle-plugin-core/target/test-classes/testProject/additionalJavaSrc/generated" />
- <root url="file://$PROJECT_DIR$/../kotlin/libraries/examples/kotlin-java-example/src/test/java" />
- <root url="file://$PROJECT_DIR$/../kotlin/generators/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/generators/tests" />
- <root url="file://$PROJECT_DIR$/../kotlin/jps-plugin/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/jps-plugin/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/jps-plugin/kannotator-jps-plugin-test/test" />
- <root url="file://$PROJECT_DIR$/../kotlin/dependencies/download/asm-src" />
- <root url="file://$PROJECT_DIR$/../kotlin/injector-generator/src" />
- <root url="file://$PROJECT_DIR$/../kotlin/ide-compiler-runner/src" />
- </SOURCES>
- </library>
-</component> \ No newline at end of file
diff --git a/.idea/libraries/picocontainer.xml b/.idea/libraries/picocontainer.xml
new file mode 100644
index 00000000..ae62c0ee
--- /dev/null
+++ b/.idea/libraries/picocontainer.xml
@@ -0,0 +1,9 @@
+<component name="libraryTable">
+ <library name="picocontainer">
+ <CLASSES>
+ <root url="jar://$PROJECT_DIR$/lib/picocontainer.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+</component> \ No newline at end of file
diff --git a/.idea/libraries/protobuf.xml b/.idea/libraries/protobuf.xml
new file mode 100644
index 00000000..cb1e92ad
--- /dev/null
+++ b/.idea/libraries/protobuf.xml
@@ -0,0 +1,9 @@
+<component name="libraryTable">
+ <library name="protobuf">
+ <CLASSES>
+ <root url="jar://$PROJECT_DIR$/lib/protobuf-2.5.0-lite.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+</component> \ No newline at end of file
diff --git a/.idea/libraries/trove4j.xml b/.idea/libraries/trove4j.xml
new file mode 100644
index 00000000..a0b77ff5
--- /dev/null
+++ b/.idea/libraries/trove4j.xml
@@ -0,0 +1,9 @@
+<component name="libraryTable">
+ <library name="trove4j">
+ <CLASSES>
+ <root url="jar://$PROJECT_DIR$/lib/trove4j.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+</component> \ No newline at end of file
diff --git a/dokka.iml b/dokka.iml
index 62666d53..971fd601 100644
--- a/dokka.iml
+++ b/dokka.iml
@@ -10,11 +10,17 @@
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
- <orderEntry type="library" name="kotlin" level="project" />
- <orderEntry type="library" name="kotlin-compiler" level="project" />
+ <orderEntry type="library" name="intellij-core-analysis" level="project" />
<orderEntry type="library" name="junit:junit:4.11" level="project" />
<orderEntry type="library" name="markdown" level="project" />
<orderEntry type="library" name="jsoup" level="project" />
- <orderEntry type="library" name="kotlin-plugin" level="project" />
+ <orderEntry type="library" name="kotlin-for-upsource" level="project" />
+ <orderEntry type="library" name="cli-parser" level="project" />
+ <orderEntry type="library" name="guava" level="project" />
+ <orderEntry type="library" name="picocontainer" level="project" />
+ <orderEntry type="library" name="trove4j" level="project" />
+ <orderEntry type="library" name="jdom" level="project" />
+ <orderEntry type="library" name="protobuf" level="project" />
+ <orderEntry type="library" name="asm" level="project" />
</component>
</module> \ No newline at end of file
diff --git a/lib/asm-all.jar b/lib/asm-all.jar
new file mode 100644
index 00000000..80031339
--- /dev/null
+++ b/lib/asm-all.jar
Binary files differ
diff --git a/lib/cli-parser-1.1.1.jar b/lib/cli-parser-1.1.1.jar
new file mode 100644
index 00000000..bbad801d
--- /dev/null
+++ b/lib/cli-parser-1.1.1.jar
Binary files differ
diff --git a/lib/guava-17.0.jar b/lib/guava-17.0.jar
new file mode 100644
index 00000000..661fc747
--- /dev/null
+++ b/lib/guava-17.0.jar
Binary files differ
diff --git a/lib/intellij-core-analysis.jar b/lib/intellij-core-analysis.jar
new file mode 100644
index 00000000..d2fc3800
--- /dev/null
+++ b/lib/intellij-core-analysis.jar
Binary files differ
diff --git a/lib/jdom.jar b/lib/jdom.jar
new file mode 100644
index 00000000..09d88451
--- /dev/null
+++ b/lib/jdom.jar
Binary files differ
diff --git a/lib/kotlin-for-upsource.jar b/lib/kotlin-for-upsource.jar
new file mode 100644
index 00000000..4cd1b188
--- /dev/null
+++ b/lib/kotlin-for-upsource.jar
Binary files differ
diff --git a/lib/markdown.jar b/lib/markdown.jar
index dc9fa198..4ca022d5 100644
--- a/lib/markdown.jar
+++ b/lib/markdown.jar
Binary files differ
diff --git a/lib/picocontainer.jar b/lib/picocontainer.jar
new file mode 100644
index 00000000..fbb1c925
--- /dev/null
+++ b/lib/picocontainer.jar
Binary files differ
diff --git a/lib/protobuf-2.5.0-lite.jar b/lib/protobuf-2.5.0-lite.jar
new file mode 100644
index 00000000..a0819eb6
--- /dev/null
+++ b/lib/protobuf-2.5.0-lite.jar
Binary files differ
diff --git a/lib/trove4j.jar b/lib/trove4j.jar
new file mode 100644
index 00000000..93cf8ea9
--- /dev/null
+++ b/lib/trove4j.jar
Binary files differ
diff --git a/src/Analysis/AnalysisEnvironment.kt b/src/Analysis/AnalysisEnvironment.kt
index 1813a4b0..1d0631bb 100644
--- a/src/Analysis/AnalysisEnvironment.kt
+++ b/src/Analysis/AnalysisEnvironment.kt
@@ -1,17 +1,31 @@
package org.jetbrains.dokka
-import org.jetbrains.kotlin.cli.common.messages.*
-import com.intellij.openapi.*
-import org.jetbrains.kotlin.cli.jvm.compiler.*
-import org.jetbrains.kotlin.resolve.*
-import org.jetbrains.kotlin.psi.*
-import java.io.File
+import com.intellij.core.CoreApplicationEnvironment
+import com.intellij.core.CoreModuleManager
+import com.intellij.mock.MockComponentManager
+import com.intellij.openapi.Disposable
+import com.intellij.openapi.module.Module
+import com.intellij.openapi.module.ModuleManager
+import com.intellij.openapi.roots.ContentIterator
+import com.intellij.openapi.roots.OrderEntry
+import com.intellij.openapi.roots.ProjectFileIndex
+import com.intellij.openapi.util.Disposer
+import com.intellij.openapi.vfs.VirtualFile
+import org.jetbrains.jps.model.module.JpsModuleSourceRootType
+import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
+import org.jetbrains.kotlin.cli.common.messages.MessageCollector
+import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
+import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
+import org.jetbrains.kotlin.cli.jvm.config.addJavaSourceRoot
+import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoot
+import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
+import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots
import org.jetbrains.kotlin.config.*
-import org.jetbrains.kotlin.cli.common.*
-import org.jetbrains.kotlin.cli.jvm.*
-import com.intellij.openapi.util.*
-import org.jetbrains.kotlin.descriptors.ModuleDescriptor
+import org.jetbrains.kotlin.idea.caches.resolve.KotlinCacheService
+import org.jetbrains.kotlin.idea.caches.resolve.LibraryModificationTracker
+import org.jetbrains.kotlin.idea.caches.resolve.ResolutionFacade
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
+import java.io.File
/**
* Kotlin as a service entry point
@@ -33,65 +47,41 @@ public class AnalysisEnvironment(val messageCollector: MessageCollector, body: A
* Executes [processor] when analysis is complete.
* $processor: function to receive compiler environment, module and context for symbol resolution
*/
- public fun withContext<T>(processor: (JetCoreEnvironment, ResolveSession) -> T): T {
- val environment = JetCoreEnvironment.createForProduction(this, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
- val resolveSession = environment.analyze()
- if (environment.getSourceFiles().isNotEmpty()) {
- resolveSession.forceResolveAll()
- }
- return processor(environment, resolveSession)
- }
+ public fun withContext<T>(processor: (KotlinCoreEnvironment, ResolutionFacade, ResolveSession) -> T): T {
+ val environment = KotlinCoreEnvironment.createForProduction(this, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
+ val projectComponentManager = environment.project as MockComponentManager
- /**
- * Executes [processor] when analysis is complete.
- * $processor: function to receive compiler module and context for symbol resolution
- */
- public fun withContext<T>(processor: (ResolveSession) -> T): T {
- return withContext { environment, session -> processor(session) }
- }
+ val moduleManager = CoreModuleManager(environment.project, this)
+ CoreApplicationEnvironment.registerComponentInstance(projectComponentManager.getPicoContainer(),
+ javaClass<ModuleManager>(), moduleManager)
- /**
- * Streams files into [processor] and returns a stream of its results
- * $processor: function to receive context for symbol resolution and file for processing
- */
- public fun streamFiles<T>(processor: (ResolveSession, JetFile) -> T): Stream<T> {
- return withContext { environment, session ->
- environment.getSourceFiles().stream().map { file -> processor(session, file) }
- }
- }
+ projectComponentManager.registerService(javaClass<ProjectFileIndex>(),
+ CoreProjectFileIndex())
+ projectComponentManager.registerService(javaClass<LibraryModificationTracker>(),
+ LibraryModificationTracker(environment.project))
+ projectComponentManager.registerService(javaClass<KotlinCacheService>(),
+ KotlinCacheService(environment.project))
- /**
- * Runs [processor] for each file and collects its results into single list
- * $processor: function to receive context for symbol resolution and file for processing
- */
- public fun processFiles<T>(processor: (ResolveSession, JetFile) -> T): List<T> {
- return withContext { environment, session ->
- environment.getSourceFiles().map { file -> processor(session, file) }
- }
- }
- /**
- * Runs [processor] for each file and collects its results into single list
- * $processor: is a function to receive context for symbol resolution and file for processing
- */
- public fun processFilesFlat<T>(processor: (ResolveSession, JetFile) -> List<T>): List<T> {
- return withContext { environment, session ->
- environment.getSourceFiles().flatMap { file -> processor(session, file) }
- }
+ val sourceFiles = environment.getSourceFiles()
+ val facade = KotlinCacheService.getInstance(environment.project).getResolutionFacade(sourceFiles)
+ // TODO get rid of resolveSession once we have all necessary APIs in ResolutionFacade
+ val resolveSession = environment.analyze()
+ return processor(environment, facade, resolveSession)
}
/**
* Classpath for this environment.
*/
public val classpath: List<File>
- get() = configuration.get(JVMConfigurationKeys.CLASSPATH_KEY) ?: listOf()
+ get() = configuration.jvmClasspathRoots
/**
* Adds list of paths to classpath.
* $paths: collection of files to add
*/
public fun addClasspath(paths: List<File>) {
- configuration.addAll(JVMConfigurationKeys.CLASSPATH_KEY, paths)
+ configuration.addJvmClasspathRoots(paths)
}
/**
@@ -99,21 +89,30 @@ public class AnalysisEnvironment(val messageCollector: MessageCollector, body: A
* $path: path to add
*/
public fun addClasspath(path: File) {
- configuration.add(JVMConfigurationKeys.CLASSPATH_KEY, path)
+ configuration.addJvmClasspathRoot(path)
}
/**
* List of source roots for this environment.
*/
public val sources: List<String>
- get() = configuration.get(CommonConfigurationKeys.SOURCE_ROOTS_KEY) ?: listOf()
+ get() = configuration.get(CommonConfigurationKeys.CONTENT_ROOTS)
+ ?.filterIsInstance<KotlinSourceRoot>()
+ ?.map { it.path } ?: emptyList()
/**
* Adds list of paths to source roots.
* $list: collection of files to add
*/
public fun addSources(list: List<String>) {
- configuration.addAll(CommonConfigurationKeys.SOURCE_ROOTS_KEY, list)
+ list.forEach {
+ val file = File(it)
+ if (file.extension == "java") {
+ configuration.addJavaSourceRoot(file)
+ } else {
+ configuration.addKotlinSourceRoot(it)
+ }
+ }
}
/**
diff --git a/src/Analysis/CompilerAPI.kt b/src/Analysis/CompilerAPI.kt
index abba0afa..8b877204 100644
--- a/src/Analysis/CompilerAPI.kt
+++ b/src/Analysis/CompilerAPI.kt
@@ -10,12 +10,12 @@ import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.resolve.scopes.*
import org.jetbrains.kotlin.context.GlobalContext
import com.intellij.psi.search.GlobalSearchScope
+import org.jetbrains.kotlin.context.ProjectContext
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
-fun JetCoreEnvironment.analyze(): ResolveSession {
- val globalContext = GlobalContext()
- val project = getProject()
+fun KotlinCoreEnvironment.analyze(): ResolveSession {
+ val projectContext = ProjectContext(project)
val sourceFiles = getSourceFiles()
val module = object : ModuleInfo {
@@ -23,8 +23,7 @@ fun JetCoreEnvironment.analyze(): ResolveSession {
override fun dependencies(): List<ModuleInfo> = listOf(this)
}
val resolverForProject = JvmAnalyzerFacade.setupResolverForProject(
- globalContext,
- project,
+ projectContext,
listOf(module),
{ ModuleContent(sourceFiles, GlobalSearchScope.allScope(project)) },
JvmPlatformParameters { module }
diff --git a/src/Analysis/CoreProjectFileIndex.kt b/src/Analysis/CoreProjectFileIndex.kt
new file mode 100644
index 00000000..916eab73
--- /dev/null
+++ b/src/Analysis/CoreProjectFileIndex.kt
@@ -0,0 +1,97 @@
+package org.jetbrains.dokka
+
+import com.intellij.openapi.module.Module
+import com.intellij.openapi.roots.ContentIterator
+import com.intellij.openapi.roots.OrderEntry
+import com.intellij.openapi.roots.ProjectFileIndex
+import com.intellij.openapi.vfs.VirtualFile
+import org.jetbrains.jps.model.module.JpsModuleSourceRootType
+
+/**
+ * Workaround for the lack of ability to create a ProjectFileIndex implementation using only
+ * classes from projectModel-{api,impl}.
+ */
+class CoreProjectFileIndex(): ProjectFileIndex {
+ override fun getContentRootForFile(p0: VirtualFile): VirtualFile? {
+ throw UnsupportedOperationException()
+ }
+
+ override fun getContentRootForFile(p0: VirtualFile, p1: Boolean): VirtualFile? {
+ throw UnsupportedOperationException()
+ }
+
+ override fun getPackageNameByDirectory(p0: VirtualFile): String? {
+ throw UnsupportedOperationException()
+ }
+
+ override fun isInLibrarySource(p0: VirtualFile): Boolean {
+ throw UnsupportedOperationException()
+ }
+
+ override fun getClassRootForFile(p0: VirtualFile): VirtualFile? {
+ throw UnsupportedOperationException()
+ }
+
+ override fun getOrderEntriesForFile(p0: VirtualFile): List<OrderEntry> = emptyList()
+
+ override fun isInLibraryClasses(p0: VirtualFile): Boolean {
+ throw UnsupportedOperationException()
+ }
+
+ override fun isExcluded(p0: VirtualFile): Boolean {
+ throw UnsupportedOperationException()
+ }
+
+ override fun getSourceRootForFile(p0: VirtualFile): VirtualFile? {
+ throw UnsupportedOperationException()
+ }
+
+ override fun isUnderIgnored(p0: VirtualFile): Boolean {
+ throw UnsupportedOperationException()
+ }
+
+ override fun isLibraryClassFile(p0: VirtualFile): Boolean {
+ throw UnsupportedOperationException()
+ }
+
+ override fun getModuleForFile(p0: VirtualFile): Module? = null
+
+ override fun getModuleForFile(p0: VirtualFile, p1: Boolean): Module? {
+ throw UnsupportedOperationException()
+ }
+
+ override fun isInSource(p0: VirtualFile): Boolean {
+ throw UnsupportedOperationException()
+ }
+
+ override fun isIgnored(p0: VirtualFile): Boolean {
+ throw UnsupportedOperationException()
+ }
+
+ override fun isContentSourceFile(p0: VirtualFile): Boolean {
+ throw UnsupportedOperationException()
+ }
+
+ override fun isInSourceContent(p0: VirtualFile): Boolean = false
+
+ override fun iterateContent(p0: ContentIterator): Boolean {
+ throw UnsupportedOperationException()
+ }
+
+ override fun isInContent(p0: VirtualFile): Boolean {
+ throw UnsupportedOperationException()
+ }
+
+ override fun iterateContentUnderDirectory(p0: VirtualFile, p1: ContentIterator): Boolean {
+ throw UnsupportedOperationException()
+ }
+
+ override fun isInTestSourceContent(p0: VirtualFile): Boolean {
+ throw UnsupportedOperationException()
+ }
+
+ override fun isUnderSourceRootOfType(p0: VirtualFile, p1: MutableSet<out JpsModuleSourceRootType<*>>): Boolean {
+ throw UnsupportedOperationException()
+ }
+}
+
diff --git a/src/Kotlin/ContentBuilder.kt b/src/Kotlin/ContentBuilder.kt
index f454c8fe..3dd5c00e 100644
--- a/src/Kotlin/ContentBuilder.kt
+++ b/src/Kotlin/ContentBuilder.kt
@@ -120,7 +120,7 @@ fun DocumentationBuilder.functionBody(descriptor: DeclarationDescriptor, functio
logger.warn("Missing function name in @sample in ${descriptor.signature()}")
return ContentBlockCode().let() { it.append(ContentText("Missing function name in @sample")); it }
}
- val scope = getResolutionScope(session, descriptor)
+ val scope = getResolutionScope(resolutionFacade, descriptor)
val rootPackage = session.getModuleDescriptor().getPackage(FqName.ROOT)!!
val rootScope = rootPackage.getMemberScope()
val symbol = resolveInScope(functionName, scope) ?: resolveInScope(functionName, rootScope)
@@ -169,7 +169,7 @@ private fun DocumentationBuilder.resolveInScope(functionName: String, scope: Jet
currentScope = if (partSymbol is ClassDescriptor)
partSymbol.getDefaultType().getMemberScope()
else
- getResolutionScope(session, partSymbol)
+ getResolutionScope(resolutionFacade, partSymbol)
symbol = partSymbol
}
diff --git a/src/Kotlin/DocumentationBuilder.kt b/src/Kotlin/DocumentationBuilder.kt
index 8910c3e3..02ced7a4 100644
--- a/src/Kotlin/DocumentationBuilder.kt
+++ b/src/Kotlin/DocumentationBuilder.kt
@@ -8,6 +8,7 @@ import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.annotations.Annotated
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
import org.jetbrains.kotlin.descriptors.impl.EnumEntrySyntheticClassDescriptor
+import org.jetbrains.kotlin.idea.caches.resolve.ResolutionFacade
import org.jetbrains.kotlin.idea.kdoc.KDocFinder
import org.jetbrains.kotlin.idea.kdoc.resolveKDocLink
import org.jetbrains.kotlin.kdoc.psi.impl.KDocSection
@@ -37,7 +38,8 @@ private fun isSamePackage(descriptor1: DeclarationDescriptor, descriptor2: Decla
return package1 != null && package2 != null && package1.fqName == package2.fqName
}
-class DocumentationBuilder(val session: ResolveSession,
+class DocumentationBuilder(val resolutionFacade: ResolutionFacade,
+ val session: ResolveSession,
val options: DocumentationOptions,
val refGraph: NodeReferenceGraph,
val logger: DokkaLogger) {
@@ -172,7 +174,7 @@ class DocumentationBuilder(val session: ResolveSession,
fun resolveContentLink(descriptor: DeclarationDescriptor, href: String): ContentBlock {
val symbol = try {
- val symbols = resolveKDocLink(session, descriptor, null, href.split('.').toList())
+ val symbols = resolveKDocLink(resolutionFacade, descriptor, null, href.split('.').toList())
findTargetSymbol(symbols)
} catch(e: Exception) {
null
@@ -425,7 +427,7 @@ class DocumentationBuilder(val session: ResolveSession,
fun ClassDescriptor.build(): DocumentationNode {
val kind = when (getKind()) {
ClassKind.OBJECT -> Kind.Object
- ClassKind.TRAIT -> Kind.Interface
+ ClassKind.INTERFACE -> Kind.Interface
ClassKind.ENUM_CLASS -> Kind.Enum
ClassKind.ANNOTATION_CLASS -> Kind.AnnotationClass
ClassKind.ENUM_ENTRY -> Kind.EnumItem
diff --git a/src/main.kt b/src/main.kt
index aa3da881..4e2d2b11 100644
--- a/src/main.kt
+++ b/src/main.kt
@@ -12,7 +12,8 @@ import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.cli.common.messages.MessageRenderer
-import org.jetbrains.kotlin.cli.jvm.compiler.JetCoreEnvironment
+import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
+import org.jetbrains.kotlin.cli.jvm.config.JavaSourceRoot
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.utils.PathUtil
import java.io.File
@@ -215,12 +216,12 @@ fun buildDocumentationModule(environment: AnalysisEnvironment,
includes: List<String> = listOf(),
filesToDocumentFilter: (PsiFile) -> Boolean = { file -> true },
logger: DokkaLogger): DocumentationModule {
- val documentation = environment.withContext { environment, session ->
+ val documentation = environment.withContext { environment, resolutionFacade, session ->
val fragmentFiles = environment.getSourceFiles().filter(filesToDocumentFilter)
val fragments = fragmentFiles.map { session.getPackageFragment(it.getPackageFqName()) }.filterNotNull().distinct()
val refGraph = NodeReferenceGraph()
- val documentationBuilder = DocumentationBuilder(session, options, refGraph, logger)
+ val documentationBuilder = DocumentationBuilder(resolutionFacade, session, options, refGraph, logger)
val packageDocs = PackageDocs(documentationBuilder, fragments.firstOrNull(), logger)
for (include in includes) {
packageDocs.parse(include)
@@ -244,15 +245,19 @@ fun buildDocumentationModule(environment: AnalysisEnvironment,
}
-fun JetCoreEnvironment.getJavaSourceFiles(): List<PsiJavaFile> {
- val sourceRoots = getConfiguration().getList(CommonConfigurationKeys.SOURCE_ROOTS_KEY).map { File(it) }
+fun KotlinCoreEnvironment.getJavaSourceFiles(): List<PsiJavaFile> {
+ val sourceRoots = configuration.get(CommonConfigurationKeys.CONTENT_ROOTS)
+ ?.filterIsInstance<JavaSourceRoot>()
+ ?.map { it.file }
+ ?: listOf()
+
val result = arrayListOf<PsiJavaFile>()
val localFileSystem = VirtualFileManager.getInstance().getFileSystem("file")
sourceRoots.forEach { sourceRoot ->
sourceRoot.getAbsoluteFile().recurse {
val vFile = localFileSystem.findFileByPath(it.path)
if (vFile != null) {
- val psiFile = PsiManager.getInstance(getProject()).findFile(vFile)
+ val psiFile = PsiManager.getInstance(project).findFile(vFile)
if (psiFile is PsiJavaFile) {
result.add(psiFile)
}