royale-compiler icon indicating copy to clipboard operation
royale-compiler copied to clipboard

Error: Generated byte code contains an operand stack underflow.

Open Harbs opened this issue 5 years ago • 1 comments

I discovered a situation which results in the error above. It had me scratching my head for quite some time until I found the problem:

I had some markup which can be distilled to the following:

    <sp:Card>
      <sp:CardFooter text="Footer"/>
      <sp:quickActions>
        <sp:QuickActions/>
      </sp:quickActions>
    </sp:Card>

A Spectrum Card has a member called quickActions which is assigned a QuickActions component. It can also be assigned a Footer element. Specifying the element (sp:CardFooter) before the quickActions setter, caused the stack underflow.

The following modification fixes the error:

     <sp:Card>
      <sp:quickActions>
        <sp:QuickActions/>
      </sp:quickActions>
      <sp:CardFooter text="Footer"/>
    </sp:Card>

I don't know if the order of the declarations is a hard requirement, but if it is, we need a better error message...

Harbs avatar Jan 14 '20 23:01 Harbs

Hi, I think compiler should differentiate property members from elements, and the user should be able to declare in the any order, even mixing them. Then just elements should be taken by the order of declaration. just my 2...

carlosrovira avatar Jan 15 '20 09:01 carlosrovira