Skip to content
This repository was archived by the owner on Jan 29, 2025. It is now read-only.

Commit a898522

Browse files
authored
Rename identifiers containing double underscores (#2510)
1 parent 3bcb114 commit a898522

File tree

6 files changed

+69
-58
lines changed

6 files changed

+69
-58
lines changed

src/back/glsl/mod.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1129,7 +1129,8 @@ impl<'a, W: Write> Writer<'a, W> {
11291129
let ty_name = &self.names[&NameKey::Type(global.ty)];
11301130
let block_name = format!(
11311131
"{}_block_{}{:?}",
1132-
ty_name,
1132+
// avoid double underscores as they are reserved in GLSL
1133+
ty_name.trim_end_matches('_'),
11331134
self.block_id.generate(),
11341135
self.entry_point.stage,
11351136
);

src/proc/namer.rs

+11-1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ impl Namer {
3636
/// - Drop leading digits.
3737
/// - Retain only alphanumeric and `_` characters.
3838
/// - Avoid prefixes in [`Namer::reserved_prefixes`].
39+
/// - Replace consecutive `_` characters with a single `_` character.
3940
///
4041
/// The return value is a valid identifier prefix in all of Naga's output languages,
4142
/// and it never ends with a `SEPARATOR` character.
@@ -46,6 +47,7 @@ impl Namer {
4647
.trim_end_matches(SEPARATOR);
4748

4849
let base = if !string.is_empty()
50+
&& !string.contains("__")
4951
&& string
5052
.chars()
5153
.all(|c: char| c.is_ascii_alphanumeric() || c == '_')
@@ -55,7 +57,13 @@ impl Namer {
5557
let mut filtered = string
5658
.chars()
5759
.filter(|&c| c.is_ascii_alphanumeric() || c == '_')
58-
.collect::<String>();
60+
.fold(String::new(), |mut s, c| {
61+
if s.ends_with('_') && c == '_' {
62+
return s;
63+
}
64+
s.push(c);
65+
s
66+
});
5967
let stripped_len = filtered.trim_end_matches(SEPARATOR).len();
6068
filtered.truncate(stripped_len);
6169
if filtered.is_empty() {
@@ -268,4 +276,6 @@ fn test() {
268276
assert_eq!(namer.call("x"), "x");
269277
assert_eq!(namer.call("x"), "x_1");
270278
assert_eq!(namer.call("x1"), "x1_");
279+
assert_eq!(namer.call("__x"), "_x");
280+
assert_eq!(namer.call("1___x"), "_x_1");
271281
}

tests/out/glsl/math-functions.main.Fragment.glsl

+18-18
Original file line numberDiff line numberDiff line change
@@ -3,55 +3,55 @@
33
precision highp float;
44
precision highp int;
55

6-
struct __modf_result_f32_ {
6+
struct _modf_result_f32_ {
77
float fract_;
88
float whole;
99
};
10-
struct __modf_result_vec2_f32_ {
10+
struct _modf_result_vec2_f32_ {
1111
vec2 fract_;
1212
vec2 whole;
1313
};
14-
struct __modf_result_vec4_f32_ {
14+
struct _modf_result_vec4_f32_ {
1515
vec4 fract_;
1616
vec4 whole;
1717
};
18-
struct __frexp_result_f32_ {
18+
struct _frexp_result_f32_ {
1919
float fract_;
2020
int exp_;
2121
};
22-
struct __frexp_result_vec4_f32_ {
22+
struct _frexp_result_vec4_f32_ {
2323
vec4 fract_;
2424
ivec4 exp_;
2525
};
2626

27-
__modf_result_f32_ naga_modf(float arg) {
27+
_modf_result_f32_ naga_modf(float arg) {
2828
float other;
2929
float fract = modf(arg, other);
30-
return __modf_result_f32_(fract, other);
30+
return _modf_result_f32_(fract, other);
3131
}
3232

33-
__modf_result_vec2_f32_ naga_modf(vec2 arg) {
33+
_modf_result_vec2_f32_ naga_modf(vec2 arg) {
3434
vec2 other;
3535
vec2 fract = modf(arg, other);
36-
return __modf_result_vec2_f32_(fract, other);
36+
return _modf_result_vec2_f32_(fract, other);
3737
}
3838

39-
__modf_result_vec4_f32_ naga_modf(vec4 arg) {
39+
_modf_result_vec4_f32_ naga_modf(vec4 arg) {
4040
vec4 other;
4141
vec4 fract = modf(arg, other);
42-
return __modf_result_vec4_f32_(fract, other);
42+
return _modf_result_vec4_f32_(fract, other);
4343
}
4444

45-
__frexp_result_f32_ naga_frexp(float arg) {
45+
_frexp_result_f32_ naga_frexp(float arg) {
4646
int other;
4747
float fract = frexp(arg, other);
48-
return __frexp_result_f32_(fract, other);
48+
return _frexp_result_f32_(fract, other);
4949
}
5050

51-
__frexp_result_vec4_f32_ naga_frexp(vec4 arg) {
51+
_frexp_result_vec4_f32_ naga_frexp(vec4 arg) {
5252
ivec4 other;
5353
vec4 fract = frexp(arg, other);
54-
return __frexp_result_vec4_f32_(fract, other);
54+
return _frexp_result_vec4_f32_(fract, other);
5555
}
5656

5757
void main() {
@@ -90,13 +90,13 @@ void main() {
9090
uvec2 clz_d = uvec2(ivec2(31) - findMSB(uvec2(1u)));
9191
float lde_a = ldexp(1.0, 2);
9292
vec2 lde_b = ldexp(vec2(1.0, 2.0), ivec2(3, 4));
93-
__modf_result_f32_ modf_a = naga_modf(1.5);
93+
_modf_result_f32_ modf_a = naga_modf(1.5);
9494
float modf_b = naga_modf(1.5).fract_;
9595
float modf_c = naga_modf(1.5).whole;
96-
__modf_result_vec2_f32_ modf_d = naga_modf(vec2(1.5, 1.5));
96+
_modf_result_vec2_f32_ modf_d = naga_modf(vec2(1.5, 1.5));
9797
float modf_e = naga_modf(vec4(1.5, 1.5, 1.5, 1.5)).whole.x;
9898
float modf_f = naga_modf(vec2(1.5, 1.5)).fract_.y;
99-
__frexp_result_f32_ frexp_a = naga_frexp(1.5);
99+
_frexp_result_f32_ frexp_a = naga_frexp(1.5);
100100
float frexp_b = naga_frexp(1.5).fract_;
101101
int frexp_c = naga_frexp(1.5).exp_;
102102
int frexp_d = naga_frexp(vec4(1.5, 1.5, 1.5, 1.5)).exp_.x;

tests/out/glsl/padding.vertex.Vertex.glsl

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ struct Test3_ {
2020
};
2121
uniform Test_block_0Vertex { Test _group_0_binding_0_vs; };
2222

23-
uniform Test2__block_1Vertex { Test2_ _group_0_binding_1_vs; };
23+
uniform Test2_block_1Vertex { Test2_ _group_0_binding_1_vs; };
2424

25-
uniform Test3__block_2Vertex { Test3_ _group_0_binding_2_vs; };
25+
uniform Test3_block_2Vertex { Test3_ _group_0_binding_2_vs; };
2626

2727

2828
void main() {

tests/out/hlsl/math-functions.hlsl

+18-18
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,63 @@
1-
struct __modf_result_f32_ {
1+
struct _modf_result_f32_ {
22
float fract;
33
float whole;
44
};
55

6-
struct __modf_result_vec2_f32_ {
6+
struct _modf_result_vec2_f32_ {
77
float2 fract;
88
float2 whole;
99
};
1010

11-
struct __modf_result_vec4_f32_ {
11+
struct _modf_result_vec4_f32_ {
1212
float4 fract;
1313
float4 whole;
1414
};
1515

16-
struct __frexp_result_f32_ {
16+
struct _frexp_result_f32_ {
1717
float fract;
1818
int exp_;
1919
};
2020

21-
struct __frexp_result_vec4_f32_ {
21+
struct _frexp_result_vec4_f32_ {
2222
float4 fract;
2323
int4 exp_;
2424
};
2525

26-
__modf_result_f32_ naga_modf(float arg) {
26+
_modf_result_f32_ naga_modf(float arg) {
2727
float other;
28-
__modf_result_f32_ result;
28+
_modf_result_f32_ result;
2929
result.fract = modf(arg, other);
3030
result.whole = other;
3131
return result;
3232
}
3333

34-
__modf_result_vec2_f32_ naga_modf(float2 arg) {
34+
_modf_result_vec2_f32_ naga_modf(float2 arg) {
3535
float2 other;
36-
__modf_result_vec2_f32_ result;
36+
_modf_result_vec2_f32_ result;
3737
result.fract = modf(arg, other);
3838
result.whole = other;
3939
return result;
4040
}
4141

42-
__modf_result_vec4_f32_ naga_modf(float4 arg) {
42+
_modf_result_vec4_f32_ naga_modf(float4 arg) {
4343
float4 other;
44-
__modf_result_vec4_f32_ result;
44+
_modf_result_vec4_f32_ result;
4545
result.fract = modf(arg, other);
4646
result.whole = other;
4747
return result;
4848
}
4949

50-
__frexp_result_f32_ naga_frexp(float arg) {
50+
_frexp_result_f32_ naga_frexp(float arg) {
5151
float other;
52-
__frexp_result_f32_ result;
52+
_frexp_result_f32_ result;
5353
result.fract = sign(arg) * frexp(arg, other);
5454
result.exp_ = other;
5555
return result;
5656
}
5757

58-
__frexp_result_vec4_f32_ naga_frexp(float4 arg) {
58+
_frexp_result_vec4_f32_ naga_frexp(float4 arg) {
5959
float4 other;
60-
__frexp_result_vec4_f32_ result;
60+
_frexp_result_vec4_f32_ result;
6161
result.fract = sign(arg) * frexp(arg, other);
6262
result.exp_ = other;
6363
return result;
@@ -100,13 +100,13 @@ void main()
100100
uint2 clz_d = ((31u).xx - firstbithigh((1u).xx));
101101
float lde_a = ldexp(1.0, 2);
102102
float2 lde_b = ldexp(float2(1.0, 2.0), int2(3, 4));
103-
__modf_result_f32_ modf_a = naga_modf(1.5);
103+
_modf_result_f32_ modf_a = naga_modf(1.5);
104104
float modf_b = naga_modf(1.5).fract;
105105
float modf_c = naga_modf(1.5).whole;
106-
__modf_result_vec2_f32_ modf_d = naga_modf(float2(1.5, 1.5));
106+
_modf_result_vec2_f32_ modf_d = naga_modf(float2(1.5, 1.5));
107107
float modf_e = naga_modf(float4(1.5, 1.5, 1.5, 1.5)).whole.x;
108108
float modf_f = naga_modf(float2(1.5, 1.5)).fract.y;
109-
__frexp_result_f32_ frexp_a = naga_frexp(1.5);
109+
_frexp_result_f32_ frexp_a = naga_frexp(1.5);
110110
float frexp_b = naga_frexp(1.5).fract;
111111
int frexp_c = naga_frexp(1.5).exp_;
112112
int frexp_d = naga_frexp(float4(1.5, 1.5, 1.5, 1.5)).exp_.x;

tests/out/msl/math-functions.msl

+18-18
Original file line numberDiff line numberDiff line change
@@ -4,55 +4,55 @@
44

55
using metal::uint;
66

7-
struct __modf_result_f32_ {
7+
struct _modf_result_f32_ {
88
float fract;
99
float whole;
1010
};
11-
struct __modf_result_vec2_f32_ {
11+
struct _modf_result_vec2_f32_ {
1212
metal::float2 fract;
1313
metal::float2 whole;
1414
};
15-
struct __modf_result_vec4_f32_ {
15+
struct _modf_result_vec4_f32_ {
1616
metal::float4 fract;
1717
metal::float4 whole;
1818
};
19-
struct __frexp_result_f32_ {
19+
struct _frexp_result_f32_ {
2020
float fract;
2121
int exp;
2222
};
23-
struct __frexp_result_vec4_f32_ {
23+
struct _frexp_result_vec4_f32_ {
2424
metal::float4 fract;
2525
metal::int4 exp;
2626
};
2727

28-
__modf_result_f32_ naga_modf(float arg) {
28+
_modf_result_f32_ naga_modf(float arg) {
2929
float other;
3030
float fract = metal::modf(arg, other);
31-
return __modf_result_f32_{ fract, other };
31+
return _modf_result_f32_{ fract, other };
3232
}
3333

34-
__modf_result_vec2_f32_ naga_modf(metal::float2 arg) {
34+
_modf_result_vec2_f32_ naga_modf(metal::float2 arg) {
3535
metal::float2 other;
3636
metal::float2 fract = metal::modf(arg, other);
37-
return __modf_result_vec2_f32_{ fract, other };
37+
return _modf_result_vec2_f32_{ fract, other };
3838
}
3939

40-
__modf_result_vec4_f32_ naga_modf(metal::float4 arg) {
40+
_modf_result_vec4_f32_ naga_modf(metal::float4 arg) {
4141
metal::float4 other;
4242
metal::float4 fract = metal::modf(arg, other);
43-
return __modf_result_vec4_f32_{ fract, other };
43+
return _modf_result_vec4_f32_{ fract, other };
4444
}
4545

46-
__frexp_result_f32_ naga_frexp(float arg) {
46+
_frexp_result_f32_ naga_frexp(float arg) {
4747
int other;
4848
float fract = metal::frexp(arg, other);
49-
return __frexp_result_f32_{ fract, other };
49+
return _frexp_result_f32_{ fract, other };
5050
}
5151

52-
__frexp_result_vec4_f32_ naga_frexp(metal::float4 arg) {
52+
_frexp_result_vec4_f32_ naga_frexp(metal::float4 arg) {
5353
int4 other;
5454
metal::float4 fract = metal::frexp(arg, other);
55-
return __frexp_result_vec4_f32_{ fract, other };
55+
return _frexp_result_vec4_f32_{ fract, other };
5656
}
5757

5858
fragment void main_(
@@ -95,13 +95,13 @@ fragment void main_(
9595
metal::uint2 clz_d = metal::clz(metal::uint2(1u));
9696
float lde_a = metal::ldexp(1.0, 2);
9797
metal::float2 lde_b = metal::ldexp(metal::float2(1.0, 2.0), metal::int2(3, 4));
98-
__modf_result_f32_ modf_a = naga_modf(1.5);
98+
_modf_result_f32_ modf_a = naga_modf(1.5);
9999
float modf_b = naga_modf(1.5).fract;
100100
float modf_c = naga_modf(1.5).whole;
101-
__modf_result_vec2_f32_ modf_d = naga_modf(metal::float2(1.5, 1.5));
101+
_modf_result_vec2_f32_ modf_d = naga_modf(metal::float2(1.5, 1.5));
102102
float modf_e = naga_modf(metal::float4(1.5, 1.5, 1.5, 1.5)).whole.x;
103103
float modf_f = naga_modf(metal::float2(1.5, 1.5)).fract.y;
104-
__frexp_result_f32_ frexp_a = naga_frexp(1.5);
104+
_frexp_result_f32_ frexp_a = naga_frexp(1.5);
105105
float frexp_b = naga_frexp(1.5).fract;
106106
int frexp_c = naga_frexp(1.5).exp;
107107
int frexp_d = naga_frexp(metal::float4(1.5, 1.5, 1.5, 1.5)).exp.x;

0 commit comments

Comments
 (0)