diff --git a/internal/shader/expr.go b/internal/shader/expr.go index 818a27178..26a821c41 100644 --- a/internal/shader/expr.go +++ b/internal/shader/expr.go @@ -198,6 +198,12 @@ func (cs *compileState) parseExpr(block *block, expr ast.Expr) ([]shaderir.Expr, if callee.Type == shaderir.BuiltinFuncExpr { var t shaderir.Type switch callee.BuiltinFunc { + case shaderir.BoolF: + t = shaderir.Type{Main: shaderir.Bool} + case shaderir.IntF: + t = shaderir.Type{Main: shaderir.Int} + case shaderir.FloatF: + t = shaderir.Type{Main: shaderir.Float} case shaderir.Vec2F: t = shaderir.Type{Main: shaderir.Vec2} case shaderir.Vec3F: diff --git a/internal/shader/testdata/issue1298.expected.vs b/internal/shader/testdata/issue1298.expected.vs new file mode 100644 index 000000000..ad94195e5 --- /dev/null +++ b/internal/shader/testdata/issue1298.expected.vs @@ -0,0 +1,8 @@ +void F0(in float l0, out int l1); + +void F0(in float l0, out int l1) { + int l2 = 0; + l2 = int(l0); + l1 = l2; + return; +} diff --git a/internal/shader/testdata/issue1298.go b/internal/shader/testdata/issue1298.go new file mode 100644 index 000000000..187e4f2f2 --- /dev/null +++ b/internal/shader/testdata/issue1298.go @@ -0,0 +1,6 @@ +package main + +func Foo(f float) int { + x := int(f) + return x +}