From ed4a7e18565f2a1e5bdf99419fb2b9afd27508f8 Mon Sep 17 00:00:00 2001 From: Hajime Hoshi Date: Sat, 12 Sep 2020 19:50:20 +0900 Subject: [PATCH] shader: Forbid init functions Fixes #1331 --- internal/shader/shader.go | 4 ++++ shader_test.go | 14 ++++++++++++++ 2 files changed, 18 insertions(+) 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") + } +}