vscode-abl / vscode-abl

MIT License
26 stars 5 forks source link

Post-compile exceptions #244

Closed PeterJudgeZA closed 2 weeks ago

PeterJudgeZA commented 2 weeks ago

When compiling an interface, I see the error below. The interface has no ABL annotations in it.

[2024-11-12T12:42:25,886] [INFO] LanguageServerInfo: 1.17.0-535415d -- ClientInfo: Visual Studio Code 1.95.1 -- JVM: Eclipse Adoptium 17.0.13+11

[2024-11-12T12:41:11,871] [ERROR] [PROJECT] Error during post-compile phase
java.util.concurrent.CompletionException: java.lang.NullPointerException: Cannot invoke "java.util.List.stream()" because "this.annotations" is null
    at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(Unknown Source)
    at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(Unknown Source)
    at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(Unknown Source)
    at java.base/java.util.concurrent.CompletableFuture.thenApply(Unknown Source)
    at eu.rssw.openedge.ls.builder.v.run(SourceFile:161)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException: Cannot invoke "java.util.List.stream()" because "this.annotations" is null
    at org.prorefactor.core.nodetypes.StatementNode.getAnnotations(StatementNode.java:105)
    at eu.rssw.openedge.ls.builder.d.a(SourceFile:114)
    at eu.rssw.openedge.ls.builder.d.apply(SourceFile:2056)
    ... 7 common frames omitted
[2024-11-12T12:41:11,871] [INFO] [PROJECT] Compilation successful: PATH\TO\CLASS\IReportingService.cls

The interface is below (some paths changed).

 /*------------------------------------------------------------------------
    File        : IReportingService
    Purpose     : Interface for the document reporting service
    Syntax      :
    Description :
    Author(s)   : pjudge
    Created     : 2024-11-01
    Notes       :
  ----------------------------------------------------------------------*/

block-level on error undo, throw.

using Ccs.Common.*.
using Consultingwerk.*.
using Consultingwerk.SmartFramework.*.

interface Path.To.Class.IReportingService
    inherits IService:

    /**
     * Purpose: The folder into which reports are written.
     * Notes:
     */
    define public property OutputFolder as character no-undo
    get.

    /**
     * Purpose: The name of a generic 'whoops' error file
     * Notes:
     */
    define public property GeneralErrorFilename as character no-undo
    get.

    /**
     * Purpose: Prints / creates a PDF of an error message
     * Notes:
     * @param pcErrorId A unique ID for the error message
     * @param poMessage The error messages
     * @param pdtErrorTimestamp The timestamp when the error occurred
     * @param poErrorContext Any context for the error
     * @return The filename containing the error message
     */
    method public character ErrorPrint (pcErrorId as character,
                                        poMessage as IMessage,
                                        pdtErrorTimestamp as datetime,
                                        poErrorContext as IJsonSerializable).

    /**
     * Purpose: Prints / creates a PDF of an error message
     * Notes:
     * @param pcErrorId A unique ID for the error message
     * @param poMessage The error messages
     * @param pdtErrorTimestamp The timestamp when the error occurred
     * @param poErrorContext Any context for the error
     * @param pcOutputFolder An optional folder for the error report
     * @return The filename containing the error message
     */
    method public character ErrorPrint (pcErrorId as character,
                                        poMessage as IMessage,
                                        pdtErrorTimestamp as datetime,
                                        poErrorContext as IJsonSerializable,
                                        pcOutputFolder as character).

    /*------------------------------------------------------------------------------
        Purpose: InvoicePrint
        Notes:
        @param:  pcInvoiceNum The Invoice No
    ------------------------------------------------------------------------------*/
    method public void InvoicePrint (pcInvoiceNum as character).

    /*------------------------------------------------------------------------------
        Purpose: ReceiptPrint
        Notes:
        @param:  poPaymentReceiptParameter      PaymentReceiptParameter
    ------------------------------------------------------------------------------*/
    method public void ReceiptPrint (poPaymentReceiptParameter as PaymentReceiptParameter).

    /**
     * Purpose: Returns the filename for an receipt
     * Notes:
     * @param pcReceiptId The receipt id
     * @return The filename containing the receipt. May be ?
     */
    method public character GetReceiptFilename (pcReceiptId as character).

    /**
     * Purpose: Returns the filename for an invoice
     * Notes:
     * @param pcRefNum The invoice ID
     * @return The filename containing the invoice. May be ?
     */
    method public character GetInvoiceFilename (pcRefNum as character).

    /**
     * Purpose: Returns the filename for an error
     * Notes:
     * @param pcErrorId The ID for the error
     * @return The filename containing the error report. May be ?
     */
    method public character GetErrorReportFilename (pcErrorId as character).

end interface.
gquerret commented 2 weeks ago

Will be fixed !

gquerret commented 2 weeks ago

Fixed in 1.14.1