Shirakumo/glsl-toolkit

Possible bug in serializer

Closed this issue · 2 comments

It doesn't seem to like function declarations:

"#version 450

vec4 BAR(float I);
float FOO(float X);

float FOO(float X) {
    return (X * 10);
}

vec4 BAR(float I) {
    return vec4(FOO(I),FOO(I),float(0),float(0));
}

void main() {
    int X0 = 1;
    gl_Position = BAR(float(X0));
}
" 
(GLSL-TOOLKIT:SHADER (GLSL-TOOLKIT:PREPROCESSOR-DIRECTIVE "#version 450")
 (GLSL-TOOLKIT:FUNCTION-DEFINITION
  (GLSL-TOOLKIT:FUNCTION-PROTOTYPE GLSL-TOOLKIT:NO-VALUE
   (GLSL-TOOLKIT:TYPE-SPECIFIER :VEC4) "BAR"
   ((GLSL-TOOLKIT:TYPE-SPECIFIER :FLOAT) "I"))
  (GLSL-TOOLKIT:COMPOUND-STATEMENT :|;|))
 (GLSL-TOOLKIT:FUNCTION-DEFINITION
  (GLSL-TOOLKIT:FUNCTION-PROTOTYPE GLSL-TOOLKIT:NO-VALUE
   (GLSL-TOOLKIT:TYPE-SPECIFIER :FLOAT) "FOO"
   ((GLSL-TOOLKIT:TYPE-SPECIFIER :FLOAT) "X"))
  (GLSL-TOOLKIT:COMPOUND-STATEMENT :|;|))
 (GLSL-TOOLKIT:FUNCTION-DEFINITION
  (GLSL-TOOLKIT:FUNCTION-PROTOTYPE GLSL-TOOLKIT:NO-VALUE
   (GLSL-TOOLKIT:TYPE-SPECIFIER :FLOAT) "FOO"
   ((GLSL-TOOLKIT:TYPE-SPECIFIER :FLOAT) "X"))
  (GLSL-TOOLKIT:COMPOUND-STATEMENT
   (RETURN (GLSL-TOOLKIT:MULTIPLICATION "X" 10))))
 (GLSL-TOOLKIT:FUNCTION-DEFINITION
  (GLSL-TOOLKIT:FUNCTION-PROTOTYPE GLSL-TOOLKIT:NO-VALUE
   (GLSL-TOOLKIT:TYPE-SPECIFIER :VEC4) "BAR"
   ((GLSL-TOOLKIT:TYPE-SPECIFIER :FLOAT) "I"))
  (GLSL-TOOLKIT:COMPOUND-STATEMENT
   (RETURN
    (GLSL-TOOLKIT:MODIFIED-REFERENCE :VEC4
     (GLSL-TOOLKIT:CALL-MODIFIER
      (GLSL-TOOLKIT:MODIFIED-REFERENCE "FOO" (GLSL-TOOLKIT:CALL-MODIFIER "I"))
      (GLSL-TOOLKIT:MODIFIED-REFERENCE "FOO" (GLSL-TOOLKIT:CALL-MODIFIER "I"))
      (GLSL-TOOLKIT:MODIFIED-REFERENCE :FLOAT (GLSL-TOOLKIT:CALL-MODIFIER 0))
      (GLSL-TOOLKIT:MODIFIED-REFERENCE :FLOAT
       (GLSL-TOOLKIT:CALL-MODIFIER 0)))))))
 (GLSL-TOOLKIT:FUNCTION-DEFINITION
  (GLSL-TOOLKIT:FUNCTION-PROTOTYPE GLSL-TOOLKIT:NO-VALUE
   (GLSL-TOOLKIT:TYPE-SPECIFIER :VOID) "main")
  (GLSL-TOOLKIT:COMPOUND-STATEMENT
   (GLSL-TOOLKIT:VARIABLE-DECLARATION GLSL-TOOLKIT:NO-VALUE
    (GLSL-TOOLKIT:TYPE-SPECIFIER :INT) "X0" GLSL-TOOLKIT:NO-VALUE 1)
   (GLSL-TOOLKIT:ASSIGNMENT "gl_Position" :=
    (GLSL-TOOLKIT:MODIFIED-REFERENCE "BAR"
     (GLSL-TOOLKIT:CALL-MODIFIER
      (GLSL-TOOLKIT:MODIFIED-REFERENCE :FLOAT
       (GLSL-TOOLKIT:CALL-MODIFIER "X0"))))))))

VARJO> (glsl-toolkit:serialize *)
"#version 450

vec4 BAR(float I){ // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
NIL;
};

float FOO(float X){ // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< nope
NIL;
};

float FOO(float X){
return (X * 10);
};

vec4 BAR(float I){
return vec4(FOO(I), FOO(I), float(0), float(0));
};

void main(){
int X0 = 1;
gl_Position = BAR(float(X0));
};"

I fixed that in a11777d

thanks again!