Kotlin / dokka

API documentation engine for Kotlin
https://kotl.in/dokka
Apache License 2.0
3.43k stars 407 forks source link

NullPointerException on presumably undefined symbol #365

Closed mathjeff closed 4 years ago

mathjeff commented 6 years ago

Running this script:

/tmp $ cat test.sh 
set -e
tempDir=/tmp/demo
rm "$tempDir" -rf
mkdir -p "$tempDir"
cd "$tempDir"
mkdir -p "androidx/appcompat/app"
cd "androidx/appcompat/app"

echo "package androidx.appcompat.app;
public class ActionBar {
   /**
    * Sample
    */
   public static final int DISPLAY_SHOW_CUSTOM = android.app.ActionBar.DISPLAY_SHOW_CUSTOM;
}" > ActionBar.java

cd "$tempDir"

java -jar ~/dokka-fatjar-0.9.18-20180615.125641-1.jar . -dacRoot /reference/kotlin -format dac-as-java -output /tmp/out

Results in this output:

/tmp $ ./test.sh 
Module: 
Output: /tmp/out
Sources: /tmp/demo/.
Classpath: 
Analysing sources and libraries... 
Exception in thread "main" java.lang.NullPointerException
    at org.jetbrains.dokka.JavaPsiDocumentationBuilder.appendConstantValueIfAny(JavaPsiDocumentationBuilder.kt:233)
    at org.jetbrains.dokka.JavaPsiDocumentationBuilder.build(JavaPsiDocumentationBuilder.kt:218)
    at org.jetbrains.dokka.JavaPsiDocumentationBuilder$build$5.invoke(JavaPsiDocumentationBuilder.kt:194)
    at org.jetbrains.dokka.JavaPsiDocumentationBuilder$build$5.invoke(JavaPsiDocumentationBuilder.kt:46)
    at org.jetbrains.dokka.JavaPsiDocumentationBuilder.appendChildren(JavaPsiDocumentationBuilder.kt:142)
    at org.jetbrains.dokka.JavaPsiDocumentationBuilder.appendMembers(JavaPsiDocumentationBuilder.kt:171)
    at org.jetbrains.dokka.JavaPsiDocumentationBuilder.build(JavaPsiDocumentationBuilder.kt:194)
    at org.jetbrains.dokka.JavaPsiDocumentationBuilder$appendClasses$1.invoke(JavaPsiDocumentationBuilder.kt:78)
    at org.jetbrains.dokka.JavaPsiDocumentationBuilder$appendClasses$1.invoke(JavaPsiDocumentationBuilder.kt:46)
    at org.jetbrains.dokka.JavaPsiDocumentationBuilder.appendChildren(JavaPsiDocumentationBuilder.kt:142)
    at org.jetbrains.dokka.JavaPsiDocumentationBuilder.appendChildren$default(JavaPsiDocumentationBuilder.kt:138)
    at org.jetbrains.dokka.JavaPsiDocumentationBuilder.appendClasses(JavaPsiDocumentationBuilder.kt:78)
    at org.jetbrains.dokka.JavaPsiDocumentationBuilder.appendFile(JavaPsiDocumentationBuilder.kt:74)
    at org.jetbrains.dokka.DokkaGeneratorKt.buildDocumentationModule(DokkaGenerator.kt:170)
    at org.jetbrains.dokka.DokkaGenerator.appendSourceModule(DokkaGenerator.kt:76)
    at org.jetbrains.dokka.DokkaGenerator.generate(DokkaGenerator.kt:39)
    at org.jetbrains.dokka.MainKt.entry(main.kt:155)
    at org.jetbrains.dokka.MainKt.main(main.kt:200)

It'd be great if instead of throwing a NullPointerException, dokka specified what it thought was wrong and in which file.

Thanks!

mathjeff commented 6 years ago

cc @tiembo

Kordyjan commented 4 years ago

PSI tree parsing was completely rewritten in 1.4.0-rc so this issue should be fixed.