And there's another constexpr bug:
0:17.18 cargo:warning=src/glsl.h: In constructor ‘constexpr glsl::mat3::mat3(glsl::mat3_scalar)’:
0:17.18 cargo:warning=src/glsl.h:2414:29: error: call to non-‘constexpr’ function ‘glsl::vec3& glsl::vec3::operator=(glsl::vec3&&)’
0:17.18 cargo:warning= 2414 | data[0] = vec3(s.data[0]);
0:17.18 cargo:warning= | ^
0:17.18 cargo:warning=src/glsl.h:1477:8: note: ‘glsl::vec3& glsl::vec3::operator=(glsl::vec3&&)’ is not usable as a ‘constexpr’ function because:
0:17.18 cargo:warning= 1477 | struct vec3 {
0:17.18 cargo:warning= | ^~~~
0:17.18 cargo:warning=src/vector_type.h:266:15: note: defaulted constructor calls non-‘constexpr’ ‘glsl::VectorType<T, N>& glsl::VectorType<T, N>::operator=(glsl::VectorType<T, N>) [with T = float; int N = 4]’
0:17.18 cargo:warning= 266 | VectorType& operator=(VectorType x) {
0:17.18 cargo:warning= | ^~~~~~~~
0:17.18 cargo:warning=src/vector_type.h:266:15: note: ‘glsl::VectorType<T, N>& glsl::VectorType<T, N>::operator=(glsl::VectorType<T, N>) [with T = float; int N = 4]’ declared here
0:17.18 cargo:warning=src/vector_type.h:266:15: note: defaulted constructor calls non-‘constexpr’ ‘glsl::VectorType<T, N>& glsl::VectorType<T, N>::operator=(glsl::VectorType<T, N>) [with T = float; int N = 4]’
0:17.18 cargo:warning=src/vector_type.h:266:15: note: ‘glsl::VectorType<T, N>& glsl::VectorType<T, N>::operator=(glsl::VectorType<T, N>) [with T = float; int N = 4]’ declared here
0:17.18 cargo:warning=src/vector_type.h:266:15: note: defaulted constructor calls non-‘constexpr’ ‘glsl::VectorType<T, N>& glsl::VectorType<T, N>::operator=(glsl::VectorType<T, N>) [with T = float; int N = 4]’
0:17.18 cargo:warning=src/vector_type.h:266:15: note: ‘glsl::VectorType<T, N>& glsl::VectorType<T, N>::operator=(glsl::VectorType<T, N>) [with T = float; int N = 4]’ declared here
0:17.18 cargo:warning=src/glsl.h: In constructor ‘constexpr glsl::mat3::mat3(glsl::mat3_scalar, glsl::mat3_scalar, glsl::mat3_scalar, glsl::mat3_scalar)’:
0:17.18 cargo:warning=src/glsl.h:2420:66: error: call to non-‘constexpr’ function ‘glsl::vec3& glsl::vec3::operator=(glsl::vec3&&)’
0:17.18 cargo:warning= 2420 | data[0] = vec3(s0.data[0], s1.data[0], s2.data[0], s3.data[0]);
0:17.18 cargo:warning= | ^
0:17.19 cargo:warning=src/glsl.h: In constructor ‘constexpr glsl::mat3::mat3(glsl::Float, glsl::Float, glsl::Float, glsl::Float, glsl::Float, glsl::Float, glsl::Float, glsl::Float, glsl::Float)’:
0:17.19 cargo:warning=src/glsl.h:2427:30: error: call to non-‘constexpr’ function ‘glsl::vec3& glsl::vec3::operator=(glsl::vec3&&)’
0:17.19 cargo:warning= 2427 | data[0] = vec3(d1, d2, d3);
0:17.19 cargo:warning= | ^
0:17.19 cargo:warning=src/glsl.h: At global scope:
0:17.19 cargo:warning=src/glsl.h:2600:40: warning: ‘annotate’ attribute directive ignored [-Wattributes]
0:17.19 cargo:warning= 2600 | IMPLICIT constexpr mat4(mat4_scalar s) {
0:17.19 cargo:warning= | ^
0:17.19 cargo:warning=src/glsl.h: In constructor ‘constexpr glsl::mat4::mat4(glsl::mat4_scalar)’:
0:17.19 cargo:warning=src/glsl.h:2601:29: error: call to non-‘constexpr’ function ‘glsl::vec4& glsl::vec4::operator=(glsl::vec4&&)’
0:17.19 cargo:warning= 2601 | data[0] = vec4(s.data[0]);
Bug 1754752 Comment 2 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
And there's another constexpr bug:
```
0:17.18 cargo:warning=src/glsl.h: In constructor ‘constexpr glsl::mat3::mat3(glsl::mat3_scalar)’:
0:17.18 cargo:warning=src/glsl.h:2414:29: error: call to non-‘constexpr’ function ‘glsl::vec3& glsl::vec3::operator=(glsl::vec3&&)’
0:17.18 cargo:warning= 2414 | data[0] = vec3(s.data[0]);
0:17.18 cargo:warning= | ^
0:17.18 cargo:warning=src/glsl.h:1477:8: note: ‘glsl::vec3& glsl::vec3::operator=(glsl::vec3&&)’ is not usable as a ‘constexpr’ function because:
0:17.18 cargo:warning= 1477 | struct vec3 {
0:17.18 cargo:warning= | ^~~~
0:17.18 cargo:warning=src/vector_type.h:266:15: note: defaulted constructor calls non-‘constexpr’ ‘glsl::VectorType<T, N>& glsl::VectorType<T, N>::operator=(glsl::VectorType<T, N>) [with T = float; int N = 4]’
0:17.18 cargo:warning= 266 | VectorType& operator=(VectorType x) {
0:17.18 cargo:warning= | ^~~~~~~~
0:17.18 cargo:warning=src/vector_type.h:266:15: note: ‘glsl::VectorType<T, N>& glsl::VectorType<T, N>::operator=(glsl::VectorType<T, N>) [with T = float; int N = 4]’ declared here
0:17.18 cargo:warning=src/vector_type.h:266:15: note: defaulted constructor calls non-‘constexpr’ ‘glsl::VectorType<T, N>& glsl::VectorType<T, N>::operator=(glsl::VectorType<T, N>) [with T = float; int N = 4]’
0:17.18 cargo:warning=src/vector_type.h:266:15: note: ‘glsl::VectorType<T, N>& glsl::VectorType<T, N>::operator=(glsl::VectorType<T, N>) [with T = float; int N = 4]’ declared here
0:17.18 cargo:warning=src/vector_type.h:266:15: note: defaulted constructor calls non-‘constexpr’ ‘glsl::VectorType<T, N>& glsl::VectorType<T, N>::operator=(glsl::VectorType<T, N>) [with T = float; int N = 4]’
0:17.18 cargo:warning=src/vector_type.h:266:15: note: ‘glsl::VectorType<T, N>& glsl::VectorType<T, N>::operator=(glsl::VectorType<T, N>) [with T = float; int N = 4]’ declared here
0:17.18 cargo:warning=src/glsl.h: In constructor ‘constexpr glsl::mat3::mat3(glsl::mat3_scalar, glsl::mat3_scalar, glsl::mat3_scalar, glsl::mat3_scalar)’:
0:17.18 cargo:warning=src/glsl.h:2420:66: error: call to non-‘constexpr’ function ‘glsl::vec3& glsl::vec3::operator=(glsl::vec3&&)’
0:17.18 cargo:warning= 2420 | data[0] = vec3(s0.data[0], s1.data[0], s2.data[0], s3.data[0]);
0:17.18 cargo:warning= | ^
0:17.19 cargo:warning=src/glsl.h: In constructor ‘constexpr glsl::mat3::mat3(glsl::Float, glsl::Float, glsl::Float, glsl::Float, glsl::Float, glsl::Float, glsl::Float, glsl::Float, glsl::Float)’:
0:17.19 cargo:warning=src/glsl.h:2427:30: error: call to non-‘constexpr’ function ‘glsl::vec3& glsl::vec3::operator=(glsl::vec3&&)’
0:17.19 cargo:warning= 2427 | data[0] = vec3(d1, d2, d3);
0:17.19 cargo:warning= | ^
0:17.19 cargo:warning=src/glsl.h: At global scope:
0:17.19 cargo:warning=src/glsl.h:2600:40: warning: ‘annotate’ attribute directive ignored [-Wattributes]
0:17.19 cargo:warning= 2600 | IMPLICIT constexpr mat4(mat4_scalar s) {
0:17.19 cargo:warning= | ^
0:17.19 cargo:warning=src/glsl.h: In constructor ‘constexpr glsl::mat4::mat4(glsl::mat4_scalar)’:
0:17.19 cargo:warning=src/glsl.h:2601:29: error: call to non-‘constexpr’ function ‘glsl::vec4& glsl::vec4::operator=(glsl::vec4&&)’
0:17.19 cargo:warning= 2601 | data[0] = vec4(s.data[0]);
```