tint/sem: Add more checks to constant_test.cc

Check more stuff.

Change-Id: I99ba3200bb72975e9b0a740d632f7766d38e9a84
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/94334
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: David Neto <dneto@google.com>
diff --git a/src/tint/sem/constant_test.cc b/src/tint/sem/constant_test.cc
index 27cea72..b3ab025 100644
--- a/src/tint/sem/constant_test.cc
+++ b/src/tint/sem/constant_test.cc
@@ -69,105 +69,155 @@
 }
 
 TEST_F(ConstantTest, Element_ai) {
-    Constant c(create<AbstractInt>(), {1_a});
+    auto* ty = create<AbstractInt>();
+    Constant c(ty, {1_a});
     EXPECT_EQ(c.Element<AInt>(0), 1_a);
     EXPECT_EQ(c.ElementCount(), 1u);
+    EXPECT_TYPE(c.Type(), ty);
+    EXPECT_TYPE(c.ElementType(), ty);
 }
 
 TEST_F(ConstantTest, Element_i32) {
-    Constant c(create<I32>(), {1_a});
+    auto* ty = create<I32>();
+    Constant c(ty, {1_a});
     EXPECT_EQ(c.Element<i32>(0), 1_i);
     EXPECT_EQ(c.ElementCount(), 1u);
+    EXPECT_TYPE(c.Type(), ty);
+    EXPECT_TYPE(c.ElementType(), ty);
 }
 
 TEST_F(ConstantTest, Element_u32) {
-    Constant c(create<U32>(), {1_a});
+    auto* ty = create<U32>();
+    Constant c(ty, {1_a});
     EXPECT_EQ(c.Element<u32>(0), 1_u);
     EXPECT_EQ(c.ElementCount(), 1u);
+    EXPECT_TYPE(c.Type(), ty);
+    EXPECT_TYPE(c.ElementType(), ty);
 }
 
 TEST_F(ConstantTest, Element_bool) {
-    Constant c(create<Bool>(), {true});
+    auto* ty = create<Bool>();
+    Constant c(ty, {true});
     EXPECT_EQ(c.Element<bool>(0), true);
     EXPECT_EQ(c.ElementCount(), 1u);
+    EXPECT_TYPE(c.Type(), ty);
+    EXPECT_TYPE(c.ElementType(), ty);
 }
 
 TEST_F(ConstantTest, Element_af) {
-    Constant c(create<AbstractFloat>(), {1.0_a});
+    auto* ty = create<AbstractFloat>();
+    Constant c(ty, {1.0_a});
     EXPECT_EQ(c.Element<AFloat>(0), 1.0_a);
     EXPECT_EQ(c.ElementCount(), 1u);
+    EXPECT_TYPE(c.Type(), ty);
+    EXPECT_TYPE(c.ElementType(), ty);
 }
 
 TEST_F(ConstantTest, Element_f32) {
-    Constant c(create<F32>(), {1.0_a});
+    auto* ty = create<F32>();
+    Constant c(ty, {1.0_a});
     EXPECT_EQ(c.Element<f32>(0), 1.0_f);
     EXPECT_EQ(c.ElementCount(), 1u);
+    EXPECT_TYPE(c.Type(), ty);
+    EXPECT_TYPE(c.ElementType(), ty);
 }
 
 TEST_F(ConstantTest, Element_f16) {
-    Constant c(create<F16>(), {1.0_a});
+    auto* ty = create<F16>();
+    Constant c(ty, {1.0_a});
     EXPECT_EQ(c.Element<f16>(0), 1.0_h);
     EXPECT_EQ(c.ElementCount(), 1u);
+    EXPECT_TYPE(c.Type(), ty);
+    EXPECT_TYPE(c.ElementType(), ty);
 }
 
 TEST_F(ConstantTest, Element_vec3_ai) {
-    Constant c(create<Vector>(create<AbstractInt>(), 3u), {1_a, 2_a, 3_a});
+    auto* el_ty = create<AbstractInt>();
+    auto* ty = create<Vector>(el_ty, 3u);
+    Constant c(ty, {1_a, 2_a, 3_a});
     EXPECT_EQ(c.Element<AInt>(0), 1_a);
     EXPECT_EQ(c.Element<AInt>(1), 2_a);
     EXPECT_EQ(c.Element<AInt>(2), 3_a);
     EXPECT_EQ(c.ElementCount(), 3u);
+    EXPECT_TYPE(c.Type(), ty);
+    EXPECT_TYPE(c.ElementType(), el_ty);
 }
 
 TEST_F(ConstantTest, Element_vec3_i32) {
-    Constant c(create<Vector>(create<I32>(), 3u), {1_a, 2_a, 3_a});
+    auto* el_ty = create<I32>();
+    auto* ty = create<Vector>(el_ty, 3u);
+    Constant c(ty, {1_a, 2_a, 3_a});
     EXPECT_EQ(c.Element<i32>(0), 1_i);
     EXPECT_EQ(c.Element<i32>(1), 2_i);
     EXPECT_EQ(c.Element<i32>(2), 3_i);
     EXPECT_EQ(c.ElementCount(), 3u);
+    EXPECT_TYPE(c.Type(), ty);
+    EXPECT_TYPE(c.ElementType(), el_ty);
 }
 
 TEST_F(ConstantTest, Element_vec3_u32) {
-    Constant c(create<Vector>(create<U32>(), 3u), {1_a, 2_a, 3_a});
+    auto* el_ty = create<U32>();
+    auto* ty = create<Vector>(el_ty, 3u);
+    Constant c(ty, {1_a, 2_a, 3_a});
     EXPECT_EQ(c.Element<u32>(0), 1_u);
     EXPECT_EQ(c.Element<u32>(1), 2_u);
     EXPECT_EQ(c.Element<u32>(2), 3_u);
     EXPECT_EQ(c.ElementCount(), 3u);
+    EXPECT_TYPE(c.Type(), ty);
+    EXPECT_TYPE(c.ElementType(), el_ty);
 }
 
 TEST_F(ConstantTest, Element_vec3_bool) {
-    Constant c(create<Vector>(create<Bool>(), 2u), {true, false});
+    auto* el_ty = create<Bool>();
+    auto* ty = create<Vector>(el_ty, 2u);
+    Constant c(ty, {true, false});
     EXPECT_EQ(c.Element<bool>(0), true);
     EXPECT_EQ(c.Element<bool>(1), false);
     EXPECT_EQ(c.ElementCount(), 2u);
+    EXPECT_TYPE(c.Type(), ty);
+    EXPECT_TYPE(c.ElementType(), el_ty);
 }
 
 TEST_F(ConstantTest, Element_vec3_af) {
-    Constant c(create<Vector>(create<AbstractFloat>(), 3u), {1.0_a, 2.0_a, 3.0_a});
+    auto* el_ty = create<AbstractFloat>();
+    auto* ty = create<Vector>(el_ty, 3u);
+    Constant c(ty, {1.0_a, 2.0_a, 3.0_a});
     EXPECT_EQ(c.Element<AFloat>(0), 1.0_a);
     EXPECT_EQ(c.Element<AFloat>(1), 2.0_a);
     EXPECT_EQ(c.Element<AFloat>(2), 3.0_a);
     EXPECT_EQ(c.ElementCount(), 3u);
+    EXPECT_TYPE(c.Type(), ty);
+    EXPECT_TYPE(c.ElementType(), el_ty);
 }
 
 TEST_F(ConstantTest, Element_vec3_f32) {
-    Constant c(create<Vector>(create<F32>(), 3u), {1.0_a, 2.0_a, 3.0_a});
+    auto* el_ty = create<F32>();
+    auto* ty = create<Vector>(el_ty, 3u);
+    Constant c(ty, {1.0_a, 2.0_a, 3.0_a});
     EXPECT_EQ(c.Element<f32>(0), 1.0_f);
     EXPECT_EQ(c.Element<f32>(1), 2.0_f);
     EXPECT_EQ(c.Element<f32>(2), 3.0_f);
     EXPECT_EQ(c.ElementCount(), 3u);
+    EXPECT_TYPE(c.Type(), ty);
+    EXPECT_TYPE(c.ElementType(), el_ty);
 }
 
 TEST_F(ConstantTest, Element_vec3_f16) {
-    Constant c(create<Vector>(create<F16>(), 3u), {1.0_a, 2.0_a, 3.0_a});
+    auto* el_ty = create<F16>();
+    auto* ty = create<Vector>(el_ty, 3u);
+    Constant c(ty, {1.0_a, 2.0_a, 3.0_a});
     EXPECT_EQ(c.Element<f16>(0), 1.0_h);
     EXPECT_EQ(c.Element<f16>(1), 2.0_h);
     EXPECT_EQ(c.Element<f16>(2), 3.0_h);
     EXPECT_EQ(c.ElementCount(), 3u);
+    EXPECT_TYPE(c.Type(), ty);
+    EXPECT_TYPE(c.ElementType(), el_ty);
 }
 
 TEST_F(ConstantTest, Element_mat2x3_af) {
-    Constant c(create<Matrix>(create<Vector>(create<AbstractFloat>(), 3u), 2u),
-               {1.0_a, 2.0_a, 3.0_a, 4.0_a, 5.0_a, 6.0_a});
+    auto* el_ty = create<AbstractFloat>();
+    auto* ty = create<Matrix>(create<Vector>(el_ty, 3u), 2u);
+    Constant c(ty, {1.0_a, 2.0_a, 3.0_a, 4.0_a, 5.0_a, 6.0_a});
     EXPECT_EQ(c.Element<AFloat>(0), 1.0_a);
     EXPECT_EQ(c.Element<AFloat>(1), 2.0_a);
     EXPECT_EQ(c.Element<AFloat>(2), 3.0_a);
@@ -175,11 +225,14 @@
     EXPECT_EQ(c.Element<AFloat>(4), 5.0_a);
     EXPECT_EQ(c.Element<AFloat>(5), 6.0_a);
     EXPECT_EQ(c.ElementCount(), 6u);
+    EXPECT_TYPE(c.Type(), ty);
+    EXPECT_TYPE(c.ElementType(), el_ty);
 }
 
 TEST_F(ConstantTest, Element_mat2x3_f32) {
-    Constant c(create<Matrix>(create<Vector>(create<F32>(), 3u), 2u),
-               {1.0_a, 2.0_a, 3.0_a, 4.0_a, 5.0_a, 6.0_a});
+    auto* el_ty = create<F32>();
+    auto* ty = create<Matrix>(create<Vector>(el_ty, 3u), 2u);
+    Constant c(ty, {1.0_a, 2.0_a, 3.0_a, 4.0_a, 5.0_a, 6.0_a});
     EXPECT_EQ(c.Element<f32>(0), 1.0_f);
     EXPECT_EQ(c.Element<f32>(1), 2.0_f);
     EXPECT_EQ(c.Element<f32>(2), 3.0_f);
@@ -187,11 +240,14 @@
     EXPECT_EQ(c.Element<f32>(4), 5.0_f);
     EXPECT_EQ(c.Element<f32>(5), 6.0_f);
     EXPECT_EQ(c.ElementCount(), 6u);
+    EXPECT_TYPE(c.Type(), ty);
+    EXPECT_TYPE(c.ElementType(), el_ty);
 }
 
 TEST_F(ConstantTest, Element_mat2x3_f16) {
-    Constant c(create<Matrix>(create<Vector>(create<F16>(), 3u), 2u),
-               {1.0_a, 2.0_a, 3.0_a, 4.0_a, 5.0_a, 6.0_a});
+    auto* el_ty = create<F16>();
+    auto* ty = create<Matrix>(create<Vector>(el_ty, 3u), 2u);
+    Constant c(ty, {1.0_a, 2.0_a, 3.0_a, 4.0_a, 5.0_a, 6.0_a});
     EXPECT_EQ(c.Element<f16>(0), 1.0_h);
     EXPECT_EQ(c.Element<f16>(1), 2.0_h);
     EXPECT_EQ(c.Element<f16>(2), 3.0_h);
@@ -199,6 +255,8 @@
     EXPECT_EQ(c.Element<f16>(4), 5.0_h);
     EXPECT_EQ(c.Element<f16>(5), 6.0_h);
     EXPECT_EQ(c.ElementCount(), 6u);
+    EXPECT_TYPE(c.Type(), ty);
+    EXPECT_TYPE(c.ElementType(), el_ty);
 }
 
 TEST_F(ConstantTest, AnyZero) {