export const description = ` This tests overrides numeric identifiers should not conflict. `; import { makeTestGroup } from '../../../../common/framework/test_group.js'; import { AllFeaturesMaxLimitsGPUTest } from '../../../gpu_test.js'; export const g = makeTestGroup(AllFeaturesMaxLimitsGPUTest); g.test('id_conflict') .desc( ` Tests that overrides' explicit numeric identifier should not conflict. ` ) .fn(t => { t.expectValidationError(() => { t.device.createShaderModule({ code: ` @id(1234) override c0: u32; @id(4321) override c1: u32; @compute @workgroup_size(1) fn main() { // make sure the overridable constants are not optimized out _ = c0; _ = c1; } `, }); }, false); t.expectValidationError(() => { t.device.createShaderModule({ code: ` @id(1234) override c0: u32; @id(1234) override c1: u32; @compute @workgroup_size(1) fn main() { // make sure the overridable constants are not optimized out _ = c0; _ = c1; } `, }); }, true); }); g.test('name_conflict') .desc( ` Tests that overrides' variable name should not conflict, regardless of their numeric identifiers. ` ) .fn(t => { t.expectValidationError(() => { t.device.createShaderModule({ code: ` override c0: u32; override c0: u32; @compute @workgroup_size(1) fn main() { // make sure the overridable constants are not optimized out _ = c0; } `, }); }, true); t.expectValidationError(() => { t.device.createShaderModule({ code: ` @id(1) override c0: u32; override c0: u32; @compute @workgroup_size(1) fn main() { // make sure the overridable constants are not optimized out _ = c0; } `, }); }, true); t.expectValidationError(() => { t.device.createShaderModule({ code: ` @id(1) override c0: u32; @id(2) override c0: u32; @compute @workgroup_size(1) fn main() { // make sure the overridable constants are not optimized out _ = c0; } `, }); }, true); });