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]);
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]);
```

Back to Bug 1754752 Comment 2