mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 08:31:04 +01:00
Associated constants can be used in member function signatures (#5089)
This required allowing incomplete facet types where previously completeness was required. Once we support named constraints, we will need a way to consistently go from an interface to a facet type witness index without requiring the interface to be complete in these cases. --------- Co-authored-by: Josh L <josh11b@users.noreply.github.com>
This commit is contained in:
+5
-6
@@ -621,7 +621,6 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Add.assoc_type: type = assoc_entity_type %Add.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.b3c: %Add.assoc_type = assoc_entity element0, imports.%Core.import_ref.6dd [concrete]
|
||||
// CHECK:STDOUT: %Op.type.545: type = fn_type @Op.1 [concrete]
|
||||
// CHECK:STDOUT: %Op.3eb: %Op.type.545 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Self.as_type.da9: type = facet_access_type %Self.a99 [symbolic]
|
||||
// CHECK:STDOUT: %impl_witness.bd0: <witness> = impl_witness (imports.%Core.import_ref.db4) [concrete]
|
||||
// CHECK:STDOUT: %Add.facet: %Add.type = facet_value %i32.builtin, (%impl_witness.bd0) [concrete]
|
||||
@@ -668,13 +667,13 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//default, loc11_14, loaded [symbolic = @As.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Core.import_ref.a7c = import_ref Core//default, inst83 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Core.import_ref.713: @As.%As.assoc_type (%As.assoc_type.a44) = import_ref Core//default, loc12_32, loaded [symbolic = @As.%assoc0 (constants.%assoc0.5bc)]
|
||||
// CHECK:STDOUT: %Core.Convert.48c: @As.%Convert.type (%Convert.type.843) = import_ref Core//default, Convert, loaded [symbolic = @As.%Convert (constants.%Convert.95f)]
|
||||
// CHECK:STDOUT: %Core.Convert.313 = import_ref Core//default, Convert, unloaded
|
||||
// CHECK:STDOUT: %Core.import_ref.5ab3ec.2: type = import_ref Core//default, loc11_14, loaded [symbolic = @As.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Core.import_ref.996: @As.%As.type (%As.type.eed) = import_ref Core//default, inst83 [no loc], loaded [symbolic = @As.%Self (constants.%Self.65a)]
|
||||
// CHECK:STDOUT: %Core.import_ref.708: @As.%Convert.type (%Convert.type.843) = import_ref Core//default, loc12_32, loaded [symbolic = @As.%Convert (constants.%Convert.95f)]
|
||||
// CHECK:STDOUT: %Core.import_ref.07c = import_ref Core//default, inst39 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Core.import_ref.bdf: %Add.assoc_type = import_ref Core//default, loc8_41, loaded [concrete = constants.%assoc0.b3c]
|
||||
// CHECK:STDOUT: %Core.Op: %Op.type.545 = import_ref Core//default, Op, loaded [concrete = constants.%Op.3eb]
|
||||
// CHECK:STDOUT: %Core.Op = import_ref Core//default, Op, unloaded
|
||||
// CHECK:STDOUT: %Core.import_ref.595: <witness> = import_ref Core//default, loc19_17, loaded [concrete = constants.%impl_witness.bd0]
|
||||
// CHECK:STDOUT: %Core.import_ref.c8c7cd.1: type = import_ref Core//default, loc19_6, loaded [concrete = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %Core.import_ref.bf0: type = import_ref Core//default, loc19_13, loaded [concrete = constants.%Add.type]
|
||||
@@ -684,7 +683,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Core.import_ref.5ab3ec.3: type = import_ref Core//default, loc15_22, loaded [symbolic = @ImplicitAs.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//default, inst124 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Core.import_ref.630: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.837) = import_ref Core//default, loc16_32, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.43db8b.2)]
|
||||
// CHECK:STDOUT: %Core.Convert.582: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//default, Convert, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)]
|
||||
// CHECK:STDOUT: %Core.Convert.e69 = import_ref Core//default, Convert, unloaded
|
||||
// CHECK:STDOUT: %Core.import_ref.de9: <witness> = import_ref Core//default, loc27_38, loaded [concrete = constants.%impl_witness.39c]
|
||||
// CHECK:STDOUT: %Core.import_ref.8721d7.2: type = import_ref Core//default, loc27_17, loaded [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %Core.import_ref.4d9: type = import_ref Core//default, loc27_36, loaded [concrete = constants.%ImplicitAs.type.61e]
|
||||
@@ -764,7 +763,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Core.import_ref.a7c
|
||||
// CHECK:STDOUT: .Convert = imports.%Core.import_ref.713
|
||||
// CHECK:STDOUT: witness = (imports.%Core.Convert.48c)
|
||||
// CHECK:STDOUT: witness = (imports.%Core.Convert.313)
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -791,7 +790,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Core.import_ref.ff5
|
||||
// CHECK:STDOUT: .Convert = imports.%Core.import_ref.630
|
||||
// CHECK:STDOUT: witness = (imports.%Core.Convert.582)
|
||||
// CHECK:STDOUT: witness = (imports.%Core.Convert.e69)
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
Reference in New Issue
Block a user