cmajor-lang / cmajor

The Cmajor public repository
https://cmajor.dev
Other
534 stars 31 forks source link

«Internal compiler error: "createCast:1075"» with nested graph. #60

Closed jemmons closed 5 months ago

jemmons commented 6 months ago

Reproduction

Given the following patch:

graph Main [[main]]
{    
    output stream float<2> out;
    node osc = StereoOsc;
    connection osc -> out;
}

graph StereoOsc 
{
    input osc.foo;
    output stream float<2> out;

    node osc = Oscillator[2];

    connection float<2> ( osc[0].out, osc[1].out ) -> out;
}

processor Oscillator
{
    input value float foo;
    output stream float out;

    let frequency = 200.0f;

    void main ()
    {
        let phaseDelta = processor.id * float (frequency * processor.period * twoPi);

        loop
        {
            out <- volume * sin (phase);
            phase = addModulo2Pi (phase, phaseDelta);
            advance();
        }
    }

    let volume = 0.15f;
    float phase;
}

running it via cmaj play or the VScode host gives the error:

Internal compiler error: "createCast:1075"

Note: the underlying error here is mine. At line 10 I’m trying to hoist a property on osc, and osc is an array. Cmaj tries to make this an array of endpoints, and that’s not supported.

Workarounds

If the graph is not nested (that is, if StereoOsc is [[main]]), the error is reported correctly:

error: Language feature not yet implemented: top-level arrays of inputs!

It’s only if StereoOsc is referenced from somewhere else that the internal error crops up.

Priority

Very low. The internal error is really only getting in the way of better verbiage to help me diagnose my syntax error. Still, it’s an exposed internal error, so I'm making note of it here.

Environment

Cmajor: version 1.0.2454 OS: macOS 14.4.1 (23E224) CPU: Apple M1

cesaref commented 6 months ago

Thanks for raising this. I'll investigate

cesaref commented 5 months ago

There is a fix for this included in the latest release, https://github.com/cmajor-lang/cmajor/releases/tag/1.0.2462