blob: b7b82722c85a95c1033a0eb67e078393e5c71a1d [file] [log] [blame]
export const description = `Parser validation tests for enable`;
import { makeTestGroup } from '../../../../common/framework/test_group.js';
import { keysOf } from '../../../../common/util/data_tables.js';
import { ShaderValidationTest } from '../shader_validation_test.js';
export const g = makeTestGroup(ShaderValidationTest);
const kCases = {
f16: { code: `enable f16;`, pass: true },
decl_before: {
code: `alias i = i32;
enable f16;`,
pass: false,
},
decl_after: {
code: `enable f16;
alias i = i32;`,
pass: true,
},
requires_before: {
code: `requires readonly_and_readwrite_storage_textures;
enable f16;`,
pass: true,
},
diagnostic_before: {
code: `diagnostic(info, derivative_uniformity);
enable f16;`,
pass: true,
},
const_assert_before: {
code: `const_assert 1 == 1;
enable f16;`,
pass: false,
},
const_assert_after: {
code: `enable f16;
const_assert 1 == 1;`,
pass: true,
},
embedded_comment: {
code: `/* comment
*/enable f16;`,
pass: true,
},
parens: {
code: `enable(f16);`,
pass: false,
},
multi_line: {
code: `enable
f16;`,
pass: true,
},
multiple_enables: {
code: `enable f16;
enable f16;`,
pass: true,
},
multiple_entries: {
code: `enable f16, f16, f16;`,
pass: true,
},
unknown: {
code: `enable unknown;`,
pass: false,
},
subgroups: {
code: `enable subgroups;`,
pass: true,
},
subgroups_f16_pass1: {
code: `
enable f16;
enable subgroups;`,
pass: true,
},
subgroups_f16_pass2: {
code: `
enable subgroups;
enable f16;`,
pass: true,
},
in_comment_f16: {
code: `
/* enable f16; */
var<private> v: f16;
`,
pass: false,
},
};
g.test('enable')
.desc(`Tests that enables are validated correctly`)
.params(u => u.combine('case', keysOf(kCases)))
.fn(t => {
if (t.params.case === 'requires_before') {
t.skipIfLanguageFeatureNotSupported('readonly_and_readwrite_storage_textures');
}
const c = kCases[t.params.case];
t.expectCompileResult(c.pass, c.code);
});