diff --git a/internal/shader/shader.go b/internal/shader/shader.go index 986964e9f..c59af462d 100644 --- a/internal/shader/shader.go +++ b/internal/shader/shader.go @@ -565,6 +565,10 @@ func (cs *compileState) parseFunc(block *block, d *ast.FuncDecl) (function, bool cs.addError(d.Pos(), "function must have a name") return function{}, false } + if d.Name.Name == "init" { + cs.addError(d.Pos(), "init function is not implemented") + return function{}, false + } if d.Body == nil { cs.addError(d.Pos(), "function must have a body") return function{}, false diff --git a/shader_test.go b/shader_test.go index d9863d9e4..df59a76a6 100644 --- a/shader_test.go +++ b/shader_test.go @@ -358,3 +358,17 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { t.Error(err) } } + +func TestShaderInit(t *testing.T) { + if _, err := NewShader([]byte(`package main + +func init() { +} + +func Fragment(position vec4, texCoord vec2, color vec4) vec4 { + return vec4(0) +} +`)); err == nil { + t.Errorf("error must be non-nil but was nil") + } +}