consultingwerk / proparse

Proparse, forked from http://www.oehive.org/proparse/
Other
18 stars 9 forks source link

org.prorefactor.refactor.RefactorException on Function stamement when using 'LIKE' #12

Closed JPViitanen closed 6 years ago

JPViitanen commented 6 years ago

If LIKE is used on Function statement, Proparse crashes to: org.prorefactor.refactor.RefactorException: expecting AS, found 'LIKE "LIKE"

Example code: FUNCTION myExampleFunction RETURNS LOGICAL (INPUT i_iInterger LIKE TableXY.FieldYX):

mikefechner commented 6 years ago

Do you volunteer to fix that? I personally consider a LIKE definition on a function parameter a bad habit and so I'm really hesitant to spend time or money on that.

mikefechner commented 6 years ago

Anyway @marianedu without spending too much time into details. What's your estimate in # of hrs to implement this?

akera-io commented 6 years ago

I don’t think it would be something too hard to implement, although I don’t like ‘like’ either unless is quick and dirty ad-hoc code that gets trashed away when done playing with :)

Marian Edu

Acorn IT www.acorn-it.comhttp://www.acorn-it.com www.akera.iohttp://www.akera.io +40 740 036 212

On 12 Dec 2017, at 11:21, Mike Fechner notifications@github.com<mailto:notifications@github.com> wrote:

Anyway @marianeduhttps://github.com/marianedu without spending too much time into details. What's your estimate in # of hrs to implement this?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/consultingwerk/proparse/issues/12#issuecomment-350992803, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AOgnoFNZOVDv-T5zAi6eCMrIlBbpx1UKks5s_kWpgaJpZM4Q-n18.

JPViitanen commented 6 years ago

Like is not something we are using on daily basis, actually this was first time when someone had used it. It is just unfortunate that linting the rest of the code stops to the error.

akera-io commented 6 years ago

Trickier that I’ve expected but hopefully this will work, did made a pull request from https://github.com/AcornIT/proparse

Marian Edu

Acorn IT www.acorn-it.comhttp://www.acorn-it.com www.akera.iohttp://www.akera.io +40 740 036 212

On 12 Dec 2017, at 11:21, Mike Fechner notifications@github.com<mailto:notifications@github.com> wrote:

Anyway @marianeduhttps://github.com/marianedu without spending too much time into details. What's your estimate in # of hrs to implement this?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/consultingwerk/proparse/issues/12#issuecomment-350992803, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AOgnoFNZOVDv-T5zAi6eCMrIlBbpx1UKks5s_kWpgaJpZM4Q-n18.

mikefechner commented 6 years ago

@akera-io I'm getting this error here (unable to cast o.p.t.Event or o.p.t.Primative):

   [PCTRun] org.prorefactor.refactor.RefactorException: org.prorefactor.refactor.RefactorException: E:\Jenkins\workspace\6-YCFWDRMUCARZSHDAYT4SCGNZSPKFYTGBW4HKMHDPXSTCR42KX2MQ\ABL\Consultingwerk/Framework/Base/GenericList.cls
   [PCTRun] java.lang.ClassCastException: Das Objekt des Typs "org.prorefactor.treeparser.Event" kann nicht in Typ "org.prorefactor.treeparser.Primative" umgewandelt werden.
   [PCTRun]     at org.prorefactor.treeparser01.TP01Support.defAs(TP01Support.java:288)
   [PCTRun]     at org.prorefactor.treeparser01.TreeParser01.function_param_arg(TreeParser01.java:24506)
   [PCTRun]     at org.prorefactor.treeparser01.TreeParser01.function_param(TreeParser01.java:23974)
   [PCTRun]     at org.prorefactor.treeparser01.TreeParser01.function_params(TreeParser01.java:12686)
   [PCTRun]     at org.prorefactor.treeparser01.TreeParser01.defineeventstate(TreeParser01.java:16676)
   [PCTRun]     at org.prorefactor.treeparser01.TreeParser01.statement(TreeParser01.java:33997)
   [PCTRun]     at org.prorefactor.treeparser01.TreeParser01.blockorstate(TreeParser01.java:258)
   [PCTRun]     at org.prorefactor.treeparser01.TreeParser01.code_block(TreeParser01.java:11610)
   [PCTRun]     at org.prorefactor.treeparser01.TreeParser01.classstate(TreeParser01.java:11562)
   [PCTRun]     at org.prorefactor.treeparser01.TreeParser01.statement(TreeParser01.java:33321)
   [PCTRun]     at org.prorefactor.treeparser01.TreeParser01.blockorstate(TreeParser01.java:258)
   [PCTRun]     at org.prorefactor.treeparser01.TreeParser01.program(TreeParser01.java:103)
   [PCTRun]     at org.prorefactor.treeparser.TreeParserWrapper.run2(TreeParserWrapper.java:36)
   [PCTRun]     at org.prorefactor.treeparser.ParseUnit.treeParser(ParseUnit.java:275)
   [PCTRun]     at org.prorefactor.treeparser.ParseUnit.treeParser01(ParseUnit.java:291)
   [PCTRun]     at org.prorefactor.treeparser01.TP01Support.classStateSuper(TP01Support.java:260)
   [PCTRun]     at org.prorefactor.treeparser01.TP01Support.classStateInherits(TP01Support.java:228)
   [PCTRun]     at org.prorefactor.treeparser01.TP01Support.classState(TP01Support.java:224)
   [PCTRun]     at org.prorefactor.treeparser01.TreeParser01.classstate(TreeParser01.java:11473)
   [PCTRun]     at org.prorefactor.treeparser01.TreeParser01.statement(TreeParser01.java:33321)
   [PCTRun]     at org.prorefactor.treeparser01.TreeParser01.blockorstate(TreeParser01.java:258)
   [PCTRun]     at org.prorefactor.treeparser01.TreeParser01.program(TreeParser01.java:103)
   [PCTRun]     at org.prorefactor.treeparser.TreeParserWrapper.run2(TreeParserWrapper.java:36)
   [PCTRun]     at org.prorefactor.treeparser.ParseUnit.treeParser(ParseUnit.java:275)
   [PCTRun]     at org.prorefactor.treeparser.ParseUnit.treeParser01(ParseUnit.java:291)
   [PCTRun]     at cli.Progress.ClrBridge.ClrApi.InvokeMethod(Unknown Source)

Probably caused by the following event in the ABL class file:


     * Purpose: Raised when the List is changed by adding or removing items or
     *          clearing the list
     * Notes:
     * @param sender The sender of the event
     * @param e The ListChangedEventArgs object instance with the data of the ListChanged event
     */
    DEFINE PUBLIC EVENT ListChanged SIGNATURE VOID (sender AS Progress.Lang.Object, e AS ListChangedEventArgs).```
akera-io commented 6 years ago

yep, guess didn’t expected that defAs method to be dependent on current global state… hope that works better now.

Marian Edu

Acorn IT www.acorn-it.comhttp://www.acorn-it.com www.akera.iohttp://www.akera.io +40 740 036 212

On 29 Dec 2017, at 11:53, Mike Fechner notifications@github.com<mailto:notifications@github.com> wrote:

@akera-iohttps://github.com/akera-io I'm getting this error here (unable to cast o.p.t.Event or o.p.t.Primative):

[PCTRun] org.prorefactor.refactor.RefactorException: org.prorefactor.refactor.RefactorException: E:\Jenkins\workspace\6-YCFWDRMUCARZSHDAYT4SCGNZSPKFYTGBW4HKMHDPXSTCR42KX2MQ\ABL\Consultingwerk/Framework/Base/GenericList.cls [PCTRun] java.lang.ClassCastException: Das Objekt des Typs "org.prorefactor.treeparser.Event" kann nicht in Typ "org.prorefactor.treeparser.Primative" umgewandelt werden. [PCTRun] at org.prorefactor.treeparser01.TP01Support.defAs(TP01Support.java:288) [PCTRun] at org.prorefactor.treeparser01.TreeParser01.function_param_arg(TreeParser01.java:24506) [PCTRun] at org.prorefactor.treeparser01.TreeParser01.function_param(TreeParser01.java:23974) [PCTRun] at org.prorefactor.treeparser01.TreeParser01.function_params(TreeParser01.java:12686) [PCTRun] at org.prorefactor.treeparser01.TreeParser01.defineeventstate(TreeParser01.java:16676) [PCTRun] at org.prorefactor.treeparser01.TreeParser01.statement(TreeParser01.java:33997) [PCTRun] at org.prorefactor.treeparser01.TreeParser01.blockorstate(TreeParser01.java:258) [PCTRun] at org.prorefactor.treeparser01.TreeParser01.code_block(TreeParser01.java:11610) [PCTRun] at org.prorefactor.treeparser01.TreeParser01.classstate(TreeParser01.java:11562) [PCTRun] at org.prorefactor.treeparser01.TreeParser01.statement(TreeParser01.java:33321) [PCTRun] at org.prorefactor.treeparser01.TreeParser01.blockorstate(TreeParser01.java:258) [PCTRun] at org.prorefactor.treeparser01.TreeParser01.program(TreeParser01.java:103) [PCTRun] at org.prorefactor.treeparser.TreeParserWrapper.run2(TreeParserWrapper.java:36) [PCTRun] at org.prorefactor.treeparser.ParseUnit.treeParser(ParseUnit.java:275) [PCTRun] at org.prorefactor.treeparser.ParseUnit.treeParser01(ParseUnit.java:291) [PCTRun] at org.prorefactor.treeparser01.TP01Support.classStateSuper(TP01Support.java:260) [PCTRun] at org.prorefactor.treeparser01.TP01Support.classStateInherits(TP01Support.java:228) [PCTRun] at org.prorefactor.treeparser01.TP01Support.classState(TP01Support.java:224) [PCTRun] at org.prorefactor.treeparser01.TreeParser01.classstate(TreeParser01.java:11473) [PCTRun] at org.prorefactor.treeparser01.TreeParser01.statement(TreeParser01.java:33321) [PCTRun] at org.prorefactor.treeparser01.TreeParser01.blockorstate(TreeParser01.java:258) [PCTRun] at org.prorefactor.treeparser01.TreeParser01.program(TreeParser01.java:103) [PCTRun] at org.prorefactor.treeparser.TreeParserWrapper.run2(TreeParserWrapper.java:36) [PCTRun] at org.prorefactor.treeparser.ParseUnit.treeParser(ParseUnit.java:275) [PCTRun] at org.prorefactor.treeparser.ParseUnit.treeParser01(ParseUnit.java:291) [PCTRun] at cli.Progress.ClrBridge.ClrApi.InvokeMethod(Unknown Source)```

Probably caused by the following event in the ABL class file:


     * Purpose: Raised when the List is changed by adding or removing items or
     *          clearing the list
     * Notes:
     * @param sender The sender of the event
     * @param e The ListChangedEventArgs object instance with the data of the ListChanged event
     */
    DEFINE PUBLIC EVENT ListChanged SIGNATURE VOID (sender AS Progress.Lang.Object, e AS ListChangedEventArgs).```

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<https://github.com/consultingwerk/proparse/issues/12#issuecomment-354424238>, or mute the thread<https://github.com/notifications/unsubscribe-auth/AOgnoD5iQfel1ux90ocC-Hgt4wP_nSdGks5tFLaogaJpZM4Q-n18>.
mikefechner commented 6 years ago

Still no joy ...

Error parsing file: C:\Work_STREAM\SmartComponentLibrary\Develop\ABL\Consultingwerk\Framework\Base\GenericList.cls

org.prorefactor.refactor.RefactorException: Das Objekt des Typs "org.prorefactor.treeparser.TableBuffer" kann nicht in Typ "org.prorefactor.treeparser.Primative" umgewandelt werden. -> File: C:\Work_STREAM\SmartComponentLibrary\Develop\ABL\Consultingwerk\Framework\Base\GenericList.cls Line: 190 Column: 71 Type: EXTENT Text: EXTENT

org.prorefactor.core.PRCException: Das Objekt des Typs "org.prorefactor.treeparser.TableBuffer" kann nicht in Typ "org.prorefactor.treeparser.Primative" umgewandelt werden. -> File: C:\Work_STREAM\SmartComponentLibrary\Develop\ABL\Consultingwerk\Framework\Base\GenericList.cls Line: 190 Column: 71 Type: EXTENT Text: EXTENT

java.lang.ClassCastException: Das Objekt des Typs "org.prorefactor.treeparser.TableBuffer" kann nicht in Typ "org.prorefactor.treeparser.Primative" umgewandelt werden.

This time caused by:

    /**
     * Purpose: Adds the Items from an Array to the List
     * Notes:   Protected method to be overridden in the actual generic List class
     * @param poItem The Array of Items to add to the List
     */
    METHOD PROTECTED VOID InternalAdd (poItem AS Progress.Lang.Object EXTENT):

        DEFINE VARIABLE i AS INTEGER NO-UNDO.

        DO i = 1 TO EXTENT (poItem):
            THIS-OBJECT:InternalAdd (poItem[i]) .
        END.

    END METHOD.
mikefechner commented 6 years ago

Here's the class file: GenericList.cls

I do not have more stack trace. Looks like the original CAST exception is caught and rethrown.


   [PCTRun] Error parsing file: E:\Jenkins\workspace\6-YCFWDRMUCARZSHDAYT4SCGNZSPKFYTGBW4HKMHDPXSTCR42KX2MQ\UnitTests\Consultingwerk\RootPackageTest\Lists\ListCharacterHolder.cls
   [PCTRun] org.prorefactor.refactor.RefactorException: org.prorefactor.refactor.RefactorException: Das Objekt des Typs "org.prorefactor.treeparser.TableBuffer" kann nicht in Typ "org.prorefactor.treeparser.Primative" umgewandelt werden. -> File: E:\Jenkins\workspace\6-YCFWDRMUCARZSHDAYT4SCGNZSPKFYTGBW4HKMHDPXSTCR42KX2MQ\ABL\Consultingwerk/Framework/Base/GenericList.cls Line: 190 Column: 71 Type: EXTENT Text: EXTENT -> File: E:\Jenkins\workspace\6-YCFWDRMUCARZSHDAYT4SCGNZSPKFYTGBW4HKMHDPXSTCR42KX2MQ\UnitTests\Consultingwerk\RootPackageTest\Lists\ListCharacterHolder.cls Line: 17 Column: 1 Type: CLASS Text: CLASS
   [PCTRun] org.prorefactor.core.PRCException: org.prorefactor.refactor.RefactorException: Das Objekt des Typs "org.prorefactor.treeparser.TableBuffer" kann nicht in Typ "org.prorefactor.treeparser.Primative" umgewandelt werden. -> File: E:\Jenkins\workspace\6-YCFWDRMUCARZSHDAYT4SCGNZSPKFYTGBW4HKMHDPXSTCR42KX2MQ\ABL\Consultingwerk/Framework/Base/GenericList.cls Line: 190 Column: 71 Type: EXTENT Text: EXTENT -> File: E:\Jenkins\workspace\6-YCFWDRMUCARZSHDAYT4SCGNZSPKFYTGBW4HKMHDPXSTCR42KX2MQ\UnitTests\Consultingwerk\RootPackageTest\Lists\ListCharacterHolder.cls Line: 17 Column: 1 Type: CLASS Text: CLASS
   [PCTRun] java.lang.Error: org.prorefactor.refactor.RefactorException: Das Objekt des Typs "org.prorefactor.treeparser.TableBuffer" kann nicht in Typ "org.prorefactor.treeparser.Primative" umgewandelt werden. -> File: E:\Jenkins\workspace\6-YCFWDRMUCARZSHDAYT4SCGNZSPKFYTGBW4HKMHDPXSTCR42KX2MQ\ABL\Consultingwerk/Framework/Base/GenericList.cls Line: 190 Column: 71 Type: EXTENT Text: EXTENT
   [PCTRun] org.prorefactor.refactor.RefactorException: Das Objekt des Typs "org.prorefactor.treeparser.TableBuffer" kann nicht in Typ "org.prorefactor.treeparser.Primative" umgewandelt werden. -> File: E:\Jenkins\workspace\6-YCFWDRMUCARZSHDAYT4SCGNZSPKFYTGBW4HKMHDPXSTCR42KX2MQ\ABL\Consultingwerk/Framework/Base/GenericList.cls Line: 190 Column: 71 Type: EXTENT Text: EXTENT
   [PCTRun] org.prorefactor.core.PRCException: Das Objekt des Typs "org.prorefactor.treeparser.TableBuffer" kann nicht in Typ "org.prorefactor.treeparser.Primative" umgewandelt werden. -> File: E:\Jenkins\workspace\6-YCFWDRMUCARZSHDAYT4SCGNZSPKFYTGBW4HKMHDPXSTCR42KX2MQ\ABL\Consultingwerk/Framework/Base/GenericList.cls Line: 190 Column: 71 Type: EXTENT Text: EXTENT
   [PCTRun] java.lang.ClassCastException: Das Objekt des Typs "org.prorefactor.treeparser.TableBuffer" kann nicht in Typ "org.prorefactor.treeparser.Primative" umgewandelt werden.
   [PCTRun] ParseFile Consultingwerk.Studio.Proparse.ProparseHelper at line 1599  (E:\Jenkins\workspace\6-YCFWDRMUCARZSHDAYT4SCGNZSPKFYTGBW4HKMHDPXSTCR42KX2MQ\ABL\Consultingwerk\Studio\Proparse\ProparseHelper.r)```
mikefechner commented 6 years ago

Fixed in 4.0.1.1175