Skip to content

CodeWriter generates wrong nullable type in function body #1759

Description

@Tapchicoma

Describe the bug

Consider I want to generate the following code:

class Test {
    fun doSomething(): Test? { 
        // do something
        return something as Test?
    }
}

kotlinpoet actually generates the following code:

class Test {
    fun doSomething(): Test? {
        // do something
        return something as ?Test
    }
}

I highly suspect that this line should be also called on !deferred condition. Otherwise ? is emitted immediately and the type is emitted somewhat later.

To Reproduce

I failed to reproduce this issue with unit test – it seems I lack the knowledge when deferred can be in true state and it is not happening in the simple case.

Please use the following steps to reproduce on a real project:

To debug generator run ./gradlew generateAPI -Dorg.gradle.debug=true and after build start attach debugger.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions