Skip to content

[CLI] Support type lowering in the generated symbol containers #145

Description

@msujew

With #144, the slices from the generated symbol containers can be reused directly in the linking phase. However, in a grammar such as:

interface Base { Name string }

interface ExtendA extends Base {...}
interface ExtendB extends Base {...}

RefA: Ref=[ExtendA:ID]
RefB: Ref=[ExtendB:ID]
RefBase: Ref=[Base:ID]

The generated container allocates a slice for ExtendA and ExtendB, but will generate a merged container for Base. This makes sense, as it generally reduces heap allocations, but reduces linking performance, due to the amount of allocations required to generate and iterate trough the merged container. We should consider whether it makes sense to optionally lower the types of ExtendA and ExtendB into Base (in addition to keeping their own slices). This could be a generator option, as seen in #130.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions