diff options
Diffstat (limited to 'src/main.kt')
-rw-r--r-- | src/main.kt | 92 |
1 files changed, 24 insertions, 68 deletions
diff --git a/src/main.kt b/src/main.kt index 7edaf43d..7669af82 100644 --- a/src/main.kt +++ b/src/main.kt @@ -4,86 +4,42 @@ import org.jetbrains.jet.cli.common.arguments.* import com.sampullara.cli.* import com.intellij.openapi.util.* import org.jetbrains.jet.cli.common.messages.* -import org.jetbrains.jet.cli.jvm.* -import org.jetbrains.jet.config.* -import org.jetbrains.jet.cli.jvm.compiler.* -import org.jetbrains.jet.cli.common.* import org.jetbrains.jet.utils.* -import java.io.* -import org.jetbrains.jet.lang.resolve.java.* -import com.google.common.base.* -import com.intellij.psi.* -import org.jetbrains.jet.lang.resolve.* -import org.jetbrains.jet.lang.psi.* -import org.jetbrains.jet.analyzer.* +import org.jetbrains.jet.lang.resolve.BindingContext +import org.jetbrains.jet.lang.psi.JetFile public fun main(args: Array<String>) { + val dokka = DokkaContext(MessageCollectorPlainTextToStream.PLAIN_TEXT_TO_SYSTEM_ERR) + dokka.addClasspath(getClasspath(PathUtil.getKotlinPathsForCompiler())) val arguments = K2JVMCompilerArguments() - arguments.freeArgs = Args.parse(arguments, args) + val sources: List<String> = Args.parse(arguments, args) ?: listOf() + dokka.addSources(sources) - val rootDisposable = Disposer.newDisposable() + println("Dokka is preparing sources and libraries...") + println("Sources: ${dokka.sources.join()}") + println("Classpath: ${dokka.classpath.joinToString()}") - val messageCollector = MessageCollectorPlainTextToStream.PLAIN_TEXT_TO_SYSTEM_ERR - val configuration = CompilerConfiguration() + println() - val paths = PathUtil.getKotlinPathsForCompiler() - - configuration.addAll(JVMConfigurationKeys.CLASSPATH_KEY, getClasspath(paths, arguments)) - configuration.addAll(CommonConfigurationKeys.SOURCE_ROOTS_KEY, arguments.freeArgs ?: listOf()) - configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector) - - val environment = JetCoreEnvironment.createForProduction(rootDisposable, configuration) - val context = environment.analyze(messageCollector) - rootDisposable.dispose() -} - -private fun getClasspath(paths: KotlinPaths, arguments: K2JVMCompilerArguments): MutableList<File> { - val classpath = arrayListOf<File>() - classpath.addAll(PathUtil.getJdkClassesRoots()) - classpath.add(paths.getRuntimePath()) - val classPath = arguments.classpath - if (classPath != null) { - for (element in classPath.split(File.pathSeparatorChar)) { - classpath.add(File(element)) - } + dokka.analyzeFiles { context, file -> + println("Processing: ${file.getName()}") + println() + analyseFile(context, file) } - return classpath -} -private fun getAnnotationsPath(paths: KotlinPaths, arguments: K2JVMCompilerArguments): MutableList<File> { - val annotationsPath = arrayListOf<File>() - annotationsPath.add(paths.getJdkAnnotationsPath()) - val annotationPaths = arguments.annotations - if (annotationPaths != null) { - for (element in annotationPaths.split(File.pathSeparatorChar)) { - annotationsPath.add(File(element)) - } - } - return annotationsPath + Disposer.dispose(dokka) } -private fun JetCoreEnvironment.analyze(messageCollector: MessageCollector): BindingContext { - val project = getProject() - val sourceFiles = getSourceFiles() - - val analyzerWithCompilerReport = AnalyzerWithCompilerReport(messageCollector) - analyzerWithCompilerReport.analyzeAndReport(sourceFiles) { - val support = CliLightClassGenerationSupport.getInstanceForCli(project)!! - val sharedTrace = support.getTrace() - val sharedModule = support.getModule() - val compilerConfiguration = getConfiguration()!! - AnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(project, sourceFiles, sharedTrace, - Predicates.alwaysTrue<PsiFile>(), - sharedModule, - compilerConfiguration.get(JVMConfigurationKeys.MODULE_IDS), - compilerConfiguration.get(JVMConfigurationKeys.INCREMENTAL_CACHE_BASE_DIR)) +fun analyseFile(context: BindingContext, file: JetFile) { + val packageFragment = context.get(BindingContext.FILE_TO_PACKAGE_FRAGMENT, file) + if (packageFragment == null) { + println("PackageFragment is null") + return } - val exhaust = analyzerWithCompilerReport.getAnalyzeExhaust() - assert(exhaust != null) { "AnalyzeExhaust should be non-null, compiling: " + sourceFiles } - - return exhaust!!.getBindingContext() + println("Package: ${packageFragment}") + for (descriptor in packageFragment.getMemberScope().getAllDescriptors()) { + println("Member: ${descriptor}") + } } - -fun AnalyzerWithCompilerReport.analyzeAndReport(files: List<JetFile>, analyser: () -> AnalyzeExhaust) = analyzeAndReport(analyser, files)
\ No newline at end of file |