godot.entrygenerator.checks.NullablePropertyCheck.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of godot-entry-generator Show documentation
Show all versions of godot-entry-generator Show documentation
Godot Kotlin entry code generator.
package godot.entrygenerator.checks
import godot.entrygenerator.ext.isCoreType
import godot.entrygenerator.ext.isGodotPrimitive
import godot.entrygenerator.model.RegisterPropertyAnnotation
import godot.entrygenerator.model.SourceFile
import godot.entrygenerator.utils.Logger
class NullablePropertyCheck(logger: Logger, sourceFiles: List): BaseCheck(logger, sourceFiles) {
override fun execute(): Boolean {
var hasIssue = false
sourceFiles
.flatMap { it.registeredClasses }
.flatMap { it.properties }
.filter { registeredProperty -> registeredProperty.annotations.filterIsInstance().isNotEmpty() }
.forEach { exportedProperty ->
if (exportedProperty.type.isNullable && (exportedProperty.type.isCoreType() || exportedProperty.type.isGodotPrimitive())) {
hasIssue = true
logger.error(exportedProperty, "Registered property which is a Kotlin/Java primitive or Godot core type cannot be nullable. Assign a default value")
}
}
return hasIssue
}
}