diff --git a/core/prelude/types/cpp/int.carbon b/core/prelude/types/cpp/int.carbon index cb1e791b0df6..caf3797d6cf6 100644 --- a/core/prelude/types/cpp/int.carbon +++ b/core/prelude/types/cpp/int.carbon @@ -21,6 +21,14 @@ class CppCompat.ULong32 { adapt u32; } +class CppCompat.Long64 { + adapt i64; +} + +class CppCompat.ULong64 { + adapt u64; +} + class CppCompat.LongLong64 { adapt i64; } @@ -31,6 +39,8 @@ class CppCompat.ULongLong64 { impl CppCompat.Long32 as UnformedInit {} impl CppCompat.ULong32 as UnformedInit {} +impl CppCompat.Long64 as UnformedInit {} +impl CppCompat.ULong64 as UnformedInit {} impl CppCompat.LongLong64 as UnformedInit {} impl CppCompat.ULongLong64 as UnformedInit {} @@ -44,6 +54,14 @@ impl CppCompat.ULong32 as Copy { fn Op(self) -> Self = "primitive_copy"; } +impl CppCompat.Long64 as Copy { + fn Op(self) -> Self = "primitive_copy"; +} + +impl CppCompat.ULong64 as Copy { + fn Op(self) -> Self = "primitive_copy"; +} + impl CppCompat.LongLong64 as Copy { fn Op(self) -> Self = "primitive_copy"; } @@ -67,7 +85,7 @@ final impl CppCompat.Long32 as ImplicitAs(IntLiteral) { fn Convert(self) -> IntLiteral = "int.convert_checked"; } -// TODO: ImplicitAs from Int(N) to Long32 if N < 32. +// TODO: ImplicitAs from Int(N) to Long32 if N <= 32. impl i32 as ImplicitAs(CppCompat.Long32) { fn Convert(self) -> CppCompat.Long32 = "int.convert"; } @@ -97,7 +115,7 @@ final impl CppCompat.ULong32 as ImplicitAs(IntLiteral) { fn Convert(self) -> IntLiteral = "int.convert_checked"; } -// TODO: ImplicitAs from UInt(N) to ULong32 if N < 32. +// TODO: ImplicitAs from UInt(N) to ULong32 if N <= 32. impl u32 as ImplicitAs(CppCompat.ULong32) { fn Convert(self) -> CppCompat.ULong32 = "int.convert"; } @@ -107,6 +125,55 @@ final impl CppCompat.ULong32 as ImplicitAs(u64) { fn Convert(self) -> u64 = "int.convert"; } +impl IntLiteral as ImplicitAs(CppCompat.Long64) { + fn Convert(self) -> CppCompat.Long64 = "int.convert_checked"; +} + +// TODO: Remove this once `ImplicitAs` extends `As`. +impl IntLiteral as As(CppCompat.Long64) { + fn Convert(self) -> CppCompat.Long64 = "int.convert_checked"; +} + +final impl CppCompat.Long64 as ImplicitAs(IntLiteral) { + fn Convert(self) -> IntLiteral = "int.convert_checked"; +} + +// TODO: ImplicitAs from Int(N) to Long64 if N < 64. +// N == 64 is explicitly skipped, as Long64 is considered to +// be between i63 and i64. +// TODO: Ratify this in a proposal. +impl i32 as ImplicitAs(CppCompat.Long64) { + fn Convert(self) -> CppCompat.Long64 = "int.convert"; +} + +// TODO: ImplicitAs from Long64 to Int(N) if N >= 64. +final impl CppCompat.Long64 as ImplicitAs(i64) { + fn Convert(self) -> i64 = "int.convert"; +} + +impl IntLiteral as ImplicitAs(CppCompat.ULong64) { + fn Convert(self) -> CppCompat.ULong64 = "int.convert_checked"; +} + +// TODO: Remove this once `ImplicitAs` extends `As`. +impl IntLiteral as As(CppCompat.ULong64) { + fn Convert(self) -> CppCompat.ULong64 = "int.convert_checked"; +} + +final impl CppCompat.ULong64 as ImplicitAs(IntLiteral) { + fn Convert(self) -> IntLiteral = "int.convert_checked"; +} + +// TODO: ImplicitAs from UInt(N) to ULong64 if N < 64. +impl u32 as ImplicitAs(CppCompat.ULong64) { + fn Convert(self) -> CppCompat.ULong64 = "int.convert"; +} + +// TODO: ImplicitAs from ULong64 to UInt(N) if N >= 64. +final impl CppCompat.ULong64 as ImplicitAs(u64) { + fn Convert(self) -> u64 = "int.convert"; +} + impl IntLiteral as ImplicitAs(CppCompat.LongLong64) { fn Convert(self) -> CppCompat.LongLong64 = "int.convert_checked"; } @@ -120,7 +187,7 @@ final impl CppCompat.LongLong64 as ImplicitAs(IntLiteral) { fn Convert(self) -> IntLiteral = "int.convert_checked"; } -// TODO: ImplicitAs from Int(N) to LongLong64 if N < 64. +// TODO: ImplicitAs from Int(N) to LongLong64 if N <= 64. impl i64 as ImplicitAs(CppCompat.LongLong64) { fn Convert(self) -> CppCompat.LongLong64 = "int.convert"; } @@ -146,7 +213,7 @@ final impl CppCompat.ULongLong64 as ImplicitAs(IntLiteral) { fn Convert(self) -> IntLiteral = "int.convert_checked"; } -// TODO: ImplicitAs from UInt(N) to ULongLong64 if N < 64. +// TODO: ImplicitAs from UInt(N) to ULongLong64 if N <= 64. impl u64 as ImplicitAs(CppCompat.ULongLong64) { fn Convert(self) -> CppCompat.ULongLong64 = "int.convert"; } @@ -156,15 +223,115 @@ final impl CppCompat.ULongLong64 as ImplicitAs(u128) { fn Convert(self) -> u128 = "int.convert"; } -// TODO: As from Long32 to Int(N) if N < 32. -// TODO: As from ULong32 to UInt(N) if N < 32. -// TODO: As from LongLong64 to Int(N) if N < 64. -// TODO: As from ULongLong64 to UInt(N) if N < 64. +// TODO: As from Long32 to Int(N) if N <= 32. +// TODO: As from ULong32 to UInt(N) if N <= 32. +// TODO: As from Long64 to Int(N) if N < 64. +// TODO: As from ULong64 to UInt(N) if N < 64. +// TODO: As from LongLong64 to Int(N) if N <= 64. +// TODO: As from ULongLong64 to UInt(N) if N <= 64. // TODO: As from Int(N) to Long32 if N > 32. // TODO: As from UInt(N) to ULong32 if N > 32. +// TODO: As from Int(N) to Long64 if N >= 64. +// TODO: As from UInt(N) to ULong64 if N >= 64. // TODO: As from Int(N) to LongLong64 if N > 64. // TODO: As from UInt(N) to ULongLong64 if N > 64. +impl forall [From: IntLiteral] Int(From) as As(CppCompat.Long32) { + fn Convert(self) -> CppCompat.Long32 = "int.convert"; +} +impl forall [From: IntLiteral] UInt(From) as As(CppCompat.Long32) { + fn Convert(self) -> CppCompat.Long32 = "int.convert"; +} +impl forall [From: IntLiteral] Int(From) as As(CppCompat.Long64) { + fn Convert(self) -> CppCompat.Long64 = "int.convert"; +} +impl forall [From: IntLiteral] UInt(From) as As(CppCompat.Long64) { + fn Convert(self) -> CppCompat.Long64 = "int.convert"; +} +impl forall [From: IntLiteral] Int(From) as As(CppCompat.LongLong64) { + fn Convert(self) -> CppCompat.LongLong64 = "int.convert"; +} +impl forall [From: IntLiteral] UInt(From) as As(CppCompat.LongLong64) { + fn Convert(self) -> CppCompat.LongLong64 = "int.convert"; +} +impl forall [From: IntLiteral] Int(From) as As(CppCompat.ULong32) { + fn Convert(self) -> CppCompat.ULong32 = "int.convert"; +} +impl forall [From: IntLiteral] UInt(From) as As(CppCompat.ULong32) { + fn Convert(self) -> CppCompat.ULong32 = "int.convert"; +} +impl forall [From: IntLiteral] Int(From) as As(CppCompat.ULong64) { + fn Convert(self) -> CppCompat.ULong64 = "int.convert"; +} +impl forall [From: IntLiteral] UInt(From) as As(CppCompat.ULong64) { + fn Convert(self) -> CppCompat.ULong64 = "int.convert"; +} +impl forall [From: IntLiteral] Int(From) as As(CppCompat.ULongLong64) { + fn Convert(self) -> CppCompat.ULongLong64 = "int.convert"; +} +impl forall [From: IntLiteral] UInt(From) as As(CppCompat.ULongLong64) { + fn Convert(self) -> CppCompat.ULongLong64 = "int.convert"; +} +final impl forall [To: IntLiteral] CppCompat.Long32 as As(Int(To)) { + fn Convert(self) -> Int(To) = "int.convert"; +} +final impl forall [To: IntLiteral] CppCompat.Long32 as As(UInt(To)) { + fn Convert(self) -> UInt(To) = "int.convert"; +} +final impl forall [To: IntLiteral] CppCompat.Long64 as As(Int(To)) { + fn Convert(self) -> Int(To) = "int.convert"; +} +final impl forall [To: IntLiteral] CppCompat.Long64 as As(UInt(To)) { + fn Convert(self) -> UInt(To) = "int.convert"; +} +final impl forall [To: IntLiteral] CppCompat.LongLong64 as As(Int(To)) { + fn Convert(self) -> Int(To) = "int.convert"; +} +final impl forall [To: IntLiteral] CppCompat.LongLong64 as As(UInt(To)) { + fn Convert(self) -> UInt(To) = "int.convert"; +} +final impl forall [To: IntLiteral] CppCompat.ULong32 as As(Int(To)) { + fn Convert(self) -> Int(To) = "int.convert"; +} +final impl forall [To: IntLiteral] CppCompat.ULong32 as As(UInt(To)) { + fn Convert(self) -> UInt(To) = "int.convert"; +} +final impl forall [To: IntLiteral] CppCompat.ULong64 as As(Int(To)) { + fn Convert(self) -> Int(To) = "int.convert"; +} +final impl forall [To: IntLiteral] CppCompat.ULong64 as As(UInt(To)) { + fn Convert(self) -> UInt(To) = "int.convert"; +} +final impl forall [To: IntLiteral] CppCompat.ULongLong64 as As(Int(To)) { + fn Convert(self) -> Int(To) = "int.convert"; +} +final impl forall [To: IntLiteral] CppCompat.ULongLong64 as As(UInt(To)) { + fn Convert(self) -> UInt(To) = "int.convert"; +} + +// We only expect to have at most one of CppCompat.{Long32,Long64,LongLong64} +// reachable in any given target, so we don't provide conversions between them. +// But we do need to provide conversions between corresponding signed and +// unsigned types. +final impl CppCompat.Long32 as As(CppCompat.ULong32) { + fn Convert(self) -> CppCompat.ULong32 = "int.convert"; +} +final impl CppCompat.Long64 as As(CppCompat.ULong64) { + fn Convert(self) -> CppCompat.ULong64 = "int.convert"; +} +final impl CppCompat.LongLong64 as As(CppCompat.ULongLong64) { + fn Convert(self) -> CppCompat.ULongLong64 = "int.convert"; +} +final impl CppCompat.ULong32 as As(CppCompat.Long32) { + fn Convert(self) -> CppCompat.Long32 = "int.convert"; +} +final impl CppCompat.ULong64 as As(CppCompat.Long64) { + fn Convert(self) -> CppCompat.Long64 = "int.convert"; +} +final impl CppCompat.ULongLong64 as As(CppCompat.LongLong64) { + fn Convert(self) -> CppCompat.LongLong64 = "int.convert"; +} + // Comparisons. // - Homogeneous. @@ -183,6 +350,18 @@ final impl CppCompat.Long32 as OrderedWith(CppCompat.Long32) { fn GreaterOrEquivalent(self, other: Self) -> bool = "int.greater_eq"; } +final impl CppCompat.Long64 as EqWith(CppCompat.Long64) { + fn Equal(self, other: Self) -> bool = "int.eq"; + fn NotEqual(self, other: Self) -> bool = "int.neq"; +} + +final impl CppCompat.Long64 as OrderedWith(CppCompat.Long64) { + fn Less(self, other: Self) -> bool = "int.less"; + fn LessOrEquivalent(self, other: Self) -> bool = "int.less_eq"; + fn Greater(self, other: Self) -> bool = "int.greater"; + fn GreaterOrEquivalent(self, other: Self) -> bool = "int.greater_eq"; +} + final impl CppCompat.LongLong64 as EqWith(CppCompat.LongLong64) { fn Equal(self, other: Self) -> bool = "int.eq"; fn NotEqual(self, other: Self) -> bool = "int.neq"; @@ -211,6 +390,18 @@ impl forall [T: ImplicitAs(CppCompat.Long32)] CppCompat.Long32 as OrderedWith(T) fn GreaterOrEquivalent(self, other: Self) -> bool = "int.greater_eq"; } +impl forall [T: ImplicitAs(CppCompat.Long64)] CppCompat.Long64 as EqWith(T) { + fn Equal(self, other: Self) -> bool = "int.eq"; + fn NotEqual(self, other: Self) -> bool = "int.neq"; +} + +impl forall [T: ImplicitAs(CppCompat.Long64)] CppCompat.Long64 as OrderedWith(T) { + fn Less(self, other: Self) -> bool = "int.less"; + fn LessOrEquivalent(self, other: Self) -> bool = "int.less_eq"; + fn Greater(self, other: Self) -> bool = "int.greater"; + fn GreaterOrEquivalent(self, other: Self) -> bool = "int.greater_eq"; +} + impl forall [T: ImplicitAs(CppCompat.LongLong64)] CppCompat.LongLong64 as EqWith(T) { fn Equal(self, other: Self) -> bool = "int.eq"; @@ -239,6 +430,18 @@ impl forall [T: ImplicitAs(CppCompat.Long32)] T as OrderedWith(CppCompat.Long32) fn GreaterOrEquivalent(self: CppCompat.Long32, other: CppCompat.Long32) -> bool = "int.greater_eq"; } +impl forall [T: ImplicitAs(CppCompat.Long64)] T as EqWith(CppCompat.Long64) { + fn Equal(self: CppCompat.Long64, other: CppCompat.Long64) -> bool = "int.eq"; + fn NotEqual(self: CppCompat.Long64, other: CppCompat.Long64) -> bool = "int.neq"; +} + +impl forall [T: ImplicitAs(CppCompat.Long64)] T as OrderedWith(CppCompat.Long64) { + fn Less(self: CppCompat.Long64, other: CppCompat.Long64) -> bool = "int.less"; + fn LessOrEquivalent(self: CppCompat.Long64, other: CppCompat.Long64) -> bool = "int.less_eq"; + fn Greater(self: CppCompat.Long64, other: CppCompat.Long64) -> bool = "int.greater"; + fn GreaterOrEquivalent(self: CppCompat.Long64, other: CppCompat.Long64) -> bool = "int.greater_eq"; +} + impl forall [T: ImplicitAs(CppCompat.LongLong64)] T as EqWith(CppCompat.LongLong64) { fn Equal(self: CppCompat.LongLong64, @@ -259,7 +462,7 @@ impl forall [T: ImplicitAs(CppCompat.LongLong64)] other: CppCompat.LongLong64) -> bool = "int.greater_eq"; } -// TODO: Comparisons for ULong32, ULongLong64. +// TODO: Comparisons for ULong32, ULong64, ULongLong64. // Arithmetic. @@ -291,6 +494,32 @@ final impl CppCompat.Long32 as ModWith(Self) where .Result = Self { fn Op(self, other: Self) -> Self = "int.smod"; } +// - CppCompat.Long64 + +final impl CppCompat.Long64 as Negate where .Result = Self { + fn Op(self) -> Self = "int.snegate"; +} + +final impl CppCompat.Long64 as AddWith(Self) where .Result = Self { + fn Op(self, other: Self) -> Self = "int.sadd"; +} + +final impl CppCompat.Long64 as SubWith(Self) where .Result = Self { + fn Op(self, other: Self) -> Self = "int.ssub"; +} + +final impl CppCompat.Long64 as MulWith(Self) where .Result = Self { + fn Op(self, other: Self) -> Self = "int.smul"; +} + +final impl CppCompat.Long64 as DivWith(Self) where .Result = Self { + fn Op(self, other: Self) -> Self = "int.sdiv"; +} + +final impl CppCompat.Long64 as ModWith(Self) where .Result = Self { + fn Op(self, other: Self) -> Self = "int.smod"; +} + // - CppCompat.LongLong64 final impl CppCompat.LongLong64 as Negate where .Result = Self { @@ -346,6 +575,33 @@ impl forall [T: ImplicitAs(CppCompat.Long32)] fn Op(self: CppCompat.Long32, other: CppCompat.Long32) -> CppCompat.Long32 = "int.smod"; } +// - CppCompat.Long64 on left-hand side. + +impl forall [T: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as AddWith(T) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, other: CppCompat.Long64) -> CppCompat.Long64 = "int.sadd"; +} + +impl forall [T: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as SubWith(T) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, other: CppCompat.Long64) -> CppCompat.Long64 = "int.ssub"; +} + +impl forall [T: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as MulWith(T) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, other: CppCompat.Long64) -> CppCompat.Long64 = "int.smul"; +} + +impl forall [T: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as DivWith(T) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, other: CppCompat.Long64) -> CppCompat.Long64 = "int.sdiv"; +} + +impl forall [T: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as ModWith(T) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, other: CppCompat.Long64) -> CppCompat.Long64 = "int.smod"; +} + // - CppCompat.LongLong64 on left-hand side. impl forall [T: ImplicitAs(CppCompat.LongLong64)] @@ -405,6 +661,33 @@ impl forall [T: ImplicitAs(CppCompat.Long32)] fn Op(self: CppCompat.Long32, other: CppCompat.Long32) -> CppCompat.Long32 = "int.smod"; } +// - CppCompat.Long64 on right-hand side. + +impl forall [T: ImplicitAs(CppCompat.Long64)] + T as AddWith(CppCompat.Long64) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, other: CppCompat.Long64) -> CppCompat.Long64 = "int.sadd"; +} + +impl forall [T: ImplicitAs(CppCompat.Long64)] + T as SubWith(CppCompat.Long64) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, other: CppCompat.Long64) -> CppCompat.Long64 = "int.ssub"; +} + +impl forall [T: ImplicitAs(CppCompat.Long64)] + T as MulWith(CppCompat.Long64) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, other: CppCompat.Long64) -> CppCompat.Long64 = "int.smul"; +} + +impl forall [T: ImplicitAs(CppCompat.Long64)] + T as DivWith(CppCompat.Long64) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, other: CppCompat.Long64) -> CppCompat.Long64 = "int.sdiv"; +} + +impl forall [T: ImplicitAs(CppCompat.Long64)] + T as ModWith(CppCompat.Long64) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, other: CppCompat.Long64) -> CppCompat.Long64 = "int.smod"; +} + // - CppCompat.LongLong64 on right-hand side. impl forall [T: ImplicitAs(CppCompat.LongLong64)] @@ -437,7 +720,7 @@ impl forall [T: ImplicitAs(CppCompat.LongLong64)] other: CppCompat.LongLong64) -> CppCompat.LongLong64 = "int.smod"; } -// TODO: ULong32, ULongLong64: arithmetic operators. +// TODO: ULong32, ULong64, ULongLong64: arithmetic operators. // Bitwise operators. @@ -469,6 +752,32 @@ final impl CppCompat.Long32 as RightShiftWith(Self) where .Result = Self { fn Op(self, other: Self) -> Self = "int.right_shift"; } +// - CppCompat.Long64 + +final impl CppCompat.Long64 as BitComplement where .Result = Self { + fn Op(self) -> Self = "int.complement"; +} + +final impl CppCompat.Long64 as BitAndWith(Self) where .Result = Self { + fn Op(self, other: Self) -> Self = "int.and"; +} + +final impl CppCompat.Long64 as BitOrWith(Self) where .Result = Self { + fn Op(self, other: Self) -> Self = "int.or"; +} + +final impl CppCompat.Long64 as BitXorWith(Self) where .Result = Self { + fn Op(self, other: Self) -> Self = "int.xor"; +} + +final impl CppCompat.Long64 as LeftShiftWith(Self) where .Result = Self { + fn Op(self, other: Self) -> Self = "int.left_shift"; +} + +final impl CppCompat.Long64 as RightShiftWith(Self) where .Result = Self { + fn Op(self, other: Self) -> Self = "int.right_shift"; +} + // - CppCompat.LongLong64 final impl CppCompat.LongLong64 as BitComplement where .Result = Self { @@ -529,6 +838,38 @@ impl forall [T: ImplicitAs(CppCompat.Long32)] other: CppCompat.Long32) -> CppCompat.Long32 = "int.right_shift"; } +// - CppCompat.Long64 on left-hand side. + +impl forall [T: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as BitAndWith(T) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, + other:CppCompat.Long64) -> CppCompat.Long64 = "int.and"; +} + +impl forall [T: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as BitOrWith(T) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, + other: CppCompat.Long64) -> CppCompat.Long64 = "int.or"; +} + +impl forall [T: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as BitXorWith(T) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, + other: CppCompat.Long64) -> CppCompat.Long64 = "int.xor"; +} + +impl forall [T: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as LeftShiftWith(T) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, + other: CppCompat.Long64) -> CppCompat.Long64 = "int.left_shift"; +} + +impl forall [T: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as RightShiftWith(T) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, + other: CppCompat.Long64) -> CppCompat.Long64 = "int.right_shift"; +} + // - CppCompat.LongLong64 on left-hand side. impl forall [T: ImplicitAs(CppCompat.LongLong64)] @@ -593,6 +934,38 @@ impl forall [T: ImplicitAs(CppCompat.Long32)] other: CppCompat.Long32) -> CppCompat.Long32 = "int.right_shift"; } +// - CppCompat.Long64 on right-hand side. + +impl forall [T: ImplicitAs(CppCompat.Long64)] + T as BitAndWith(CppCompat.Long64) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, + other: CppCompat.Long64) -> CppCompat.Long64 = "int.and"; +} + +impl forall [T: ImplicitAs(CppCompat.Long64)] + T as BitOrWith(CppCompat.Long64) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, + other: CppCompat.Long64) -> CppCompat.Long64 = "int.or"; +} + +impl forall [T: ImplicitAs(CppCompat.Long64)] + T as BitXorWith(CppCompat.Long64) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, + other: CppCompat.Long64) -> CppCompat.Long64 = "int.xor"; +} + +impl forall [T: ImplicitAs(CppCompat.Long64)] + T as LeftShiftWith(CppCompat.Long64) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, + other: CppCompat.Long64) -> CppCompat.Long64 = "int.left_shift"; +} + +impl forall [T: ImplicitAs(CppCompat.Long64)] + T as RightShiftWith(CppCompat.Long64) where .Result = CppCompat.Long64 { + fn Op(self: CppCompat.Long64, + other: CppCompat.Long64) -> CppCompat.Long64 = "int.right_shift"; +} + // - CppCompat.LongLong64 on right-hand side. impl forall [T: ImplicitAs(CppCompat.LongLong64)] @@ -625,7 +998,7 @@ impl forall [T: ImplicitAs(CppCompat.LongLong64)] other: CppCompat.LongLong64) -> CppCompat.LongLong64 = "int.right_shift"; } -// TODO: ULong32, ULongLong64: bitwise operators. +// TODO: ULong32, ULong64, ULongLong64: bitwise operators. // Compound assignments. @@ -658,6 +1031,33 @@ impl forall [U: ImplicitAs(CppCompat.Long32)] fn Op(ref self, other: Self) = "int.smod_assign"; } +// - CppCompat.Long64 + +impl forall [U: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as AddAssignWith(U) { + fn Op(ref self, other: Self) = "int.sadd_assign"; +} + +impl forall [U: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as SubAssignWith(U) { + fn Op(ref self, other: Self) = "int.ssub_assign"; +} + +impl forall [U: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as MulAssignWith(U) { + fn Op(ref self, other: Self) = "int.smul_assign"; +} + +impl forall [U: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as DivAssignWith(U) { + fn Op(ref self, other: Self) = "int.sdiv_assign"; +} + +impl forall [U: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as ModAssignWith(U) { + fn Op(ref self, other: Self) = "int.smod_assign"; +} + // - CppCompat.LongLong64 impl forall [U: ImplicitAs(CppCompat.LongLong64)] @@ -714,6 +1114,33 @@ impl forall [U: ImplicitAs(CppCompat.Long32)] fn Op(ref self, other: Self) = "int.right_shift_assign"; } +// - CppCompat.Long64 + +impl forall [U: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as BitAndAssignWith(U) { + fn Op(ref self, other: Self) = "int.and_assign"; +} + +impl forall [U: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as BitOrAssignWith(U) { + fn Op(ref self, other: Self) = "int.or_assign"; +} + +impl forall [U: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as BitXorAssignWith(U) { + fn Op(ref self, other: Self) = "int.xor_assign"; +} + +impl forall [U: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as LeftShiftAssignWith(U) { + fn Op(ref self, other: Self) = "int.left_shift_assign"; +} + +impl forall [U: ImplicitAs(CppCompat.Long64)] + CppCompat.Long64 as RightShiftAssignWith(U) { + fn Op(ref self, other: Self) = "int.right_shift_assign"; +} + // - CppCompat.LongLong64 impl forall [U: ImplicitAs(CppCompat.LongLong64)] @@ -741,7 +1168,7 @@ impl forall [U: ImplicitAs(CppCompat.LongLong64)] fn Op(ref self, other: Self) = "int.right_shift_assign"; } -// TODO: ULong32, ULongLong64: compound assignments. +// TODO: ULong32, ULong64, ULongLong64: compound assignments. // Increment and decrement. @@ -759,6 +1186,20 @@ impl CppCompat.Long32 as Inc { } } +// - CppCompat.Long64 + +impl CppCompat.Long64 as Dec { + fn Op(ref self) { + self -= (1 as CppCompat.Long64); + } +} + +impl CppCompat.Long64 as Inc { + fn Op(ref self) { + self += (1 as CppCompat.Long64); + } +} + // - CppCompat.LongLong64 impl CppCompat.LongLong64 as Dec { @@ -773,4 +1214,4 @@ impl CppCompat.LongLong64 as Inc { } } -// TODO: Increment/decrement operations for ULong32, ULongLong64. +// TODO: Increment/decrement operations for ULong32, ULong64, ULongLong64. diff --git a/toolchain/check/core_identifier.def b/toolchain/check/core_identifier.def index a6da18564238..0647777ecebc 100644 --- a/toolchain/check/core_identifier.def +++ b/toolchain/check/core_identifier.def @@ -60,6 +60,7 @@ CARBON_CORE_IDENTIFIER(LeftShiftWith) CARBON_CORE_IDENTIFIER(Less) CARBON_CORE_IDENTIFIER(LessOrEquivalent) CARBON_CORE_IDENTIFIER(Long32) +CARBON_CORE_IDENTIFIER(Long64) CARBON_CORE_IDENTIFIER(LongLong64) CARBON_CORE_IDENTIFIER(ModAssignWith) CARBON_CORE_IDENTIFIER(ModWith) @@ -80,6 +81,7 @@ CARBON_CORE_IDENTIFIER(SubAssignWith) CARBON_CORE_IDENTIFIER(SubWith) CARBON_CORE_IDENTIFIER(UInt) CARBON_CORE_IDENTIFIER(ULong32) +CARBON_CORE_IDENTIFIER(ULong64) CARBON_CORE_IDENTIFIER(ULongLong64) CARBON_CORE_IDENTIFIER(UnsafeAs) CARBON_CORE_IDENTIFIER(VoidBase) diff --git a/toolchain/check/cpp/import.cpp b/toolchain/check/cpp/import.cpp index 1baa0dd98d09..f11b8b4ab9fc 100644 --- a/toolchain/check/cpp/import.cpp +++ b/toolchain/check/cpp/import.cpp @@ -15,6 +15,7 @@ #include "clang/AST/RecordLayout.h" #include "clang/AST/UnresolvedSet.h" #include "clang/AST/VTableBuilder.h" +#include "clang/Basic/TargetInfo.h" #include "clang/Frontend/CompilerInvocation.h" #include "clang/Lex/MacroInfo.h" #include "clang/Lex/Preprocessor.h" @@ -1109,17 +1110,48 @@ static auto MakeCppCompatType(Context& context, SemIR::LocId loc_id, LookupNameInCore(context, loc_id, {CoreIdentifier::CppCompat, name})); } -// Maps a C++ builtin integer type to a Carbon `Core.CppCompat` type. -static auto MapBuiltinCppCompatIntegerType(Context& context, - unsigned int cpp_width, - unsigned int carbon_width, - CoreIdentifier cpp_compat_name) - -> TypeExpr { - if (cpp_width != carbon_width) { - return TypeExpr::None; +auto GetIntNType(const clang::ASTContext& ast_context, unsigned width, + bool is_signed) -> clang::QualType { + const auto& target_info = ast_context.getTargetInfo(); + + // Work around Clang's getIntTypeForBitwidth being broken in various targets. + auto target_type = clang::TargetInfo::IntType::NoInt; + if (width == 64) { + target_type = + is_signed ? target_info.getInt64Type() : target_info.getUInt64Type(); + } else if (width == 16) { + target_type = + is_signed ? target_info.getInt16Type() : target_info.getUInt16Type(); + } else { + target_type = target_info.getIntTypeByWidth(width, is_signed); } - return MakeCppCompatType(context, Parse::NodeId::None, cpp_compat_name); + switch (target_type) { + case clang::TargetInfo::NoInt: + // Call getIntTypeForBitwidth to pick up its i128 handling. + return ast_context.getIntTypeForBitwidth(width, is_signed); + + case clang::TargetInfo::SignedChar: + return ast_context.SignedCharTy; + case clang::TargetInfo::UnsignedChar: + return ast_context.UnsignedCharTy; + case clang::TargetInfo::SignedShort: + return ast_context.ShortTy; + case clang::TargetInfo::UnsignedShort: + return ast_context.UnsignedShortTy; + case clang::TargetInfo::SignedInt: + return ast_context.IntTy; + case clang::TargetInfo::UnsignedInt: + return ast_context.UnsignedIntTy; + case clang::TargetInfo::SignedLong: + return ast_context.LongTy; + case clang::TargetInfo::UnsignedLong: + return ast_context.UnsignedLongTy; + case clang::TargetInfo::SignedLongLong: + return ast_context.LongLongTy; + case clang::TargetInfo::UnsignedLongLong: + return ast_context.UnsignedLongLongTy; + } } // Maps a C++ builtin integer type to a Carbon type. @@ -1130,7 +1162,10 @@ static auto MapBuiltinIntegerType(Context& context, SemIR::LocId loc_id, clang::ASTContext& ast_context = context.ast_context(); unsigned width = ast_context.getIntWidth(qual_type); bool is_signed = type.isSignedInteger(); - auto int_n_type = ast_context.getIntTypeForBitwidth(width, is_signed); + + // Check whether the type is `intN_t` or `uintN_t`, and if so, map it to `iN` + // or `uN` respectively. + auto int_n_type = GetIntNType(ast_context, width, is_signed); if (clang::ASTContext::hasSameType(qual_type, int_n_type)) { TypeExpr type_expr = MakeIntType(context, context.ints().Add(width), is_signed); @@ -1144,26 +1179,41 @@ static auto MapBuiltinIntegerType(Context& context, SemIR::LocId loc_id, } return type_expr; } - if (clang::ASTContext::hasSameType(qual_type, ast_context.CharTy)) { - return ExprAsType(context, Parse::NodeId::None, - MakeCharTypeLiteral(context, Parse::NodeId::None)); - } - if (clang::ASTContext::hasSameType(qual_type, ast_context.LongTy)) { - return MapBuiltinCppCompatIntegerType(context, width, 32, - CoreIdentifier::Long32); - } - if (clang::ASTContext::hasSameType(qual_type, ast_context.UnsignedLongTy)) { - return MapBuiltinCppCompatIntegerType(context, width, 32, - CoreIdentifier::ULong32); - } - if (clang::ASTContext::hasSameType(qual_type, ast_context.LongLongTy)) { - return MapBuiltinCppCompatIntegerType(context, width, 64, - CoreIdentifier::LongLong64); - } - if (clang::ASTContext::hasSameType(qual_type, - ast_context.UnsignedLongLongTy)) { - return MapBuiltinCppCompatIntegerType(context, width, 64, - CoreIdentifier::ULongLong64); + + // Handle special cases for types that don't map to `iN` or `uN`. + switch (type.getKind()) { + case clang::BuiltinType::Char_S: + case clang::BuiltinType::Char_U: + return ExprAsType(context, Parse::NodeId::None, + MakeCharTypeLiteral(context, Parse::NodeId::None)); + case clang::BuiltinType::Long: + if (width == 32) { + return MakeCppCompatType(context, loc_id, CoreIdentifier::Long32); + } + if (width == 64) { + return MakeCppCompatType(context, loc_id, CoreIdentifier::Long64); + } + break; + case clang::BuiltinType::ULong: + if (width == 32) { + return MakeCppCompatType(context, loc_id, CoreIdentifier::ULong32); + } + if (width == 64) { + return MakeCppCompatType(context, loc_id, CoreIdentifier::ULong64); + } + break; + case clang::BuiltinType::LongLong: + if (width == 64) { + return MakeCppCompatType(context, loc_id, CoreIdentifier::LongLong64); + } + break; + case clang::BuiltinType::ULongLong: + if (width == 64) { + return MakeCppCompatType(context, loc_id, CoreIdentifier::ULongLong64); + } + break; + default: + break; } return TypeExpr::None; } diff --git a/toolchain/check/cpp/import.h b/toolchain/check/cpp/import.h index 1eda3ac1df12..157269ed4688 100644 --- a/toolchain/check/cpp/import.h +++ b/toolchain/check/cpp/import.h @@ -18,6 +18,7 @@ #include "toolchain/sem_ir/ids.h" namespace clang { +class ASTContext; class CompilerInvocation; class IdentifierInfo; class VarDecl; @@ -82,6 +83,10 @@ inline auto ImportCppFunctionDecl(Context& context, SemIR::LocId loc_id, SemIR::ClangDeclKey::ForFunctionDecl(clang_decl, signature_id)); } +// Returns the type that intN_t or uintN_t is an alias for. +auto GetIntNType(const clang::ASTContext& ast_context, unsigned width, + bool is_signed) -> clang::QualType; + // Imports a type from Clang to Carbon. Returns a `TypeExpr` which contains // both a `TypeId` and `TypeInstId`. All unimported dependencies are imported // first. diff --git a/toolchain/check/cpp/type_mapping.cpp b/toolchain/check/cpp/type_mapping.cpp index 05da556c5789..0254b11a3c3b 100644 --- a/toolchain/check/cpp/type_mapping.cpp +++ b/toolchain/check/cpp/type_mapping.cpp @@ -169,10 +169,10 @@ static auto TryMapClassType(Context& context, SemIR::ClassType class_type) bit_width, clang::FloatModeKind::NoFloat); } case SemIR::NumericTypeLiteralInfo::Int: { - return ast_context.getIntTypeForBitwidth(bit_width, true); + return GetIntNType(ast_context, bit_width, true); } case SemIR::NumericTypeLiteralInfo::UInt: { - return ast_context.getIntTypeForBitwidth(bit_width, false); + return GetIntNType(ast_context, bit_width, false); } } } @@ -182,9 +182,15 @@ static auto TryMapClassType(Context& context, SemIR::ClassType class_type) case SemIR::RecognizedTypeInfo::CppLong32: { return VerifyIntegerTypeWidth(context, ast_context.LongTy, 32); } + case SemIR::RecognizedTypeInfo::CppLong64: { + return VerifyIntegerTypeWidth(context, ast_context.LongTy, 64); + } case SemIR::RecognizedTypeInfo::CppULong32: { return VerifyIntegerTypeWidth(context, ast_context.UnsignedLongTy, 32); } + case SemIR::RecognizedTypeInfo::CppULong64: { + return VerifyIntegerTypeWidth(context, ast_context.UnsignedLongTy, 64); + } case SemIR::RecognizedTypeInfo::CppLongLong64: { return VerifyIntegerTypeWidth(context, ast_context.LongLongTy, 64); } diff --git a/toolchain/check/testdata/interop/cpp/class/import/template.carbon b/toolchain/check/testdata/interop/cpp/class/import/template.carbon index 68ccdc7e76e5..6cb5e712059c 100644 --- a/toolchain/check/testdata/interop/cpp/class/import/template.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/template.carbon @@ -19,8 +19,8 @@ template struct A : Base { T n; }; -using Aint = A; -using Along = A; +using Ai32 = A; +using Ai16 = A; // --- use_class_template.carbon @@ -28,7 +28,7 @@ library "[[@TEST_NAME]]"; import Cpp library "class_template.h"; -fn F(x: Cpp.Aint) -> i32 { +fn F(x: Cpp.Ai32) -> i32 { // Trigger instantiation through name lookup. //@dump-sem-ir-begin x.f(); @@ -36,7 +36,7 @@ fn F(x: Cpp.Aint) -> i32 { //@dump-sem-ir-end } -fn G(p: Cpp.Along*) -> Cpp.Base* { +fn G(p: Cpp.Ai16*) -> Cpp.Base* { // Trigger instantiation through type completion. //@dump-sem-ir-begin return p; @@ -125,8 +125,8 @@ fn F() { // CHECK:STDOUT: %Copy.WithSelf.Op.type.d09: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet.987) [concrete] // CHECK:STDOUT: %.7a6: type = fn_type_with_self_type %Copy.WithSelf.Op.type.d09, %Copy.facet.987 [concrete] // CHECK:STDOUT: %Int.as.Copy.impl.Op.specific_fn: = specific_function %Int.as.Copy.impl.Op.4f6, @Int.as.Copy.impl.Op(%int_32) [concrete] -// CHECK:STDOUT: %A.26b: type = class_type @A.2 [concrete] -// CHECK:STDOUT: %ptr.f2d: type = ptr_type %A.26b [concrete] +// CHECK:STDOUT: %A.e3f: type = class_type @A.2 [concrete] +// CHECK:STDOUT: %ptr.bc0: type = ptr_type %A.e3f [concrete] // CHECK:STDOUT: %ptr.0e0: type = ptr_type %Base [concrete] // CHECK:STDOUT: %Copy.impl_witness.428: = impl_witness imports.%Copy.impl_witness_table.4f1, @ptr.as.Copy.impl(%Base) [concrete] // CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.136: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%Base) [concrete] @@ -168,10 +168,10 @@ fn F() { // CHECK:STDOUT: return %Int.as.Copy.impl.Op.call // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%p.param: %ptr.f2d) -> out %return.param: %ptr.0e0 { +// CHECK:STDOUT: fn @G(%p.param: %ptr.bc0) -> out %return.param: %ptr.0e0 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.f2d = name_ref p, %p -// CHECK:STDOUT: %.loc17_11.1: ref %A.26b = deref %p.ref +// CHECK:STDOUT: %p.ref: %ptr.bc0 = name_ref p, %p +// CHECK:STDOUT: %.loc17_11.1: ref %A.e3f = deref %p.ref // CHECK:STDOUT: %.loc17_11.2: ref %Base = class_element_access %.loc17_11.1, element0 // CHECK:STDOUT: %addr: %ptr.0e0 = addr_of %.loc17_11.2 // CHECK:STDOUT: %.loc17_11.3: %ptr.0e0 = converted %p.ref, %addr diff --git a/toolchain/check/testdata/interop/cpp/function/import/arithmetic_types_direct.carbon b/toolchain/check/testdata/interop/cpp/function/import/arithmetic_types_direct.carbon index e35dfd84ab37..ff0fd38b57de 100644 --- a/toolchain/check/testdata/interop/cpp/function/import/arithmetic_types_direct.carbon +++ b/toolchain/check/testdata/interop/cpp/function/import/arithmetic_types_direct.carbon @@ -3,6 +3,7 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // // INCLUDE-FILE: toolchain/testing/testdata/min_prelude/primitives.carbon +// EXTRA-ARGS: --target=x86_64-linux-gnu // // AUTOUPDATE // TIP: To test this file alone, run: diff --git a/toolchain/check/testdata/interop/cpp/function/import/overloads.carbon b/toolchain/check/testdata/interop/cpp/function/import/overloads.carbon index 6fd3cf2e244b..e9fe196b7e62 100644 --- a/toolchain/check/testdata/interop/cpp/function/import/overloads.carbon +++ b/toolchain/check/testdata/interop/cpp/function/import/overloads.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/primitives.carbon -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -629,31 +628,45 @@ fn F() { // Overload rejected on Carbon side // ============================================================================ -// --- upsizing_rejected.h +// --- upsizing.h auto foo(int a) -> void; -// --- fail_import_upsizing_rejected.carbon +// --- upsizing.carbon library "[[@TEST_NAME]]"; -import Cpp library "upsizing_rejected.h"; +import Cpp library "upsizing.h"; fn F() { - // CHECK:STDERR: fail_import_upsizing_rejected.carbon:[[@LINE+11]]:11: error: cannot implicitly convert expression of type `i16` to `i32` [ConversionFailure] - // CHECK:STDERR: Cpp.foo(1 as i16); - // CHECK:STDERR: ^~~~~~~~ - // CHECK:STDERR: fail_import_upsizing_rejected.carbon:[[@LINE+8]]:11: note: type `i16` does not implement interface `Core.ImplicitAs(i32)` [MissingImplInMemberAccessInContext] - // CHECK:STDERR: Cpp.foo(1 as i16); - // CHECK:STDERR: ^~~~~~~~ - // CHECK:STDERR: fail_import_upsizing_rejected.carbon:[[@LINE-9]]:10: in file included here [InCppInclude] - // CHECK:STDERR: ./upsizing_rejected.h:2:14: note: initializing function parameter [InCallToFunctionParam] - // CHECK:STDERR: auto foo(int a) -> void; - // CHECK:STDERR: ^ - // CHECK:STDERR: Cpp.foo(1 as i16); } +// --- signedness_change.h + +auto foo(unsigned int a) -> void; + +// --- fail_signedness_change_rejected.carbon + +library "[[@TEST_NAME]]"; + +import Cpp library "signedness_change.h"; + +fn F() { + // CHECK:STDERR: fail_signedness_change_rejected.carbon:[[@LINE+11]]:11: error: cannot implicitly convert expression of type `i32` to `u32` [ConversionFailure] + // CHECK:STDERR: Cpp.foo(1 as i32); + // CHECK:STDERR: ^~~~~~~~ + // CHECK:STDERR: fail_signedness_change_rejected.carbon:[[@LINE+8]]:11: note: type `i32` does not implement interface `Core.ImplicitAs(u32)` [MissingImplInMemberAccessInContext] + // CHECK:STDERR: Cpp.foo(1 as i32); + // CHECK:STDERR: ^~~~~~~~ + // CHECK:STDERR: fail_signedness_change_rejected.carbon:[[@LINE-9]]:10: in file included here [InCppInclude] + // CHECK:STDERR: ./signedness_change.h:2:23: note: initializing function parameter [InCallToFunctionParam] + // CHECK:STDERR: auto foo(unsigned int a) -> void; + // CHECK:STDERR: ^ + // CHECK:STDERR: + Cpp.foo(1 as i32); +} + // --- downsizing_rejected.h auto foo(short a) -> void; @@ -789,3294 +802,3 @@ fn F() { // CHECK:STDERR: EchoValue(Cpp.foo); } - -// CHECK:STDOUT: --- import_multiple_functions_no_overloads.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %bar.cpp_overload_set.type: type = cpp_overload_set_type @bar.cpp_overload_set [concrete] -// CHECK:STDOUT: %bar.cpp_overload_set.value: %bar.cpp_overload_set.type = cpp_overload_set_value @bar.cpp_overload_set [concrete] -// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] -// CHECK:STDOUT: %i16: type = class_type @Int, @Int(%int_16) [concrete] -// CHECK:STDOUT: %i16.builtin: type = int_type signed, %int_16 [concrete] -// CHECK:STDOUT: %As.type.116: type = generic_interface_type @As [concrete] -// CHECK:STDOUT: %As.generic: %As.type.116 = struct_value () [concrete] -// CHECK:STDOUT: %As.type.6f1: type = facet_type <@As, @As(%i16)> [concrete] -// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.c5d: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.6ee: %Core.IntLiteral.as.As.impl.Convert.type.c5d = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.820: = impl_witness imports.%As.impl_witness_table.1c5, @Core.IntLiteral.as.As.impl(%int_16) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.4b7: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_16) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.70c: %Core.IntLiteral.as.As.impl.Convert.type.4b7 = struct_value () [concrete] -// CHECK:STDOUT: %As.facet: %As.type.6f1 = facet_value Core.IntLiteral, (%As.impl_witness.820) [concrete] -// CHECK:STDOUT: %As.WithSelf.Convert.type.d73: type = fn_type @As.WithSelf.Convert, @As.WithSelf(%i16, %As.facet) [concrete] -// CHECK:STDOUT: %.6b5: type = fn_type_with_self_type %As.WithSelf.Convert.type.d73, %As.facet [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.70c [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.70c, @Core.IntLiteral.as.As.impl.Convert(%int_16) [concrete] -// CHECK:STDOUT: %bound_method.a0f: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] -// CHECK:STDOUT: %int_1.d17: %i16 = int_value 1 [concrete] -// CHECK:STDOUT: %ptr.686: type = ptr_type %i16 [concrete] -// CHECK:STDOUT: %pattern_type.f71: type = pattern_type %ptr.686 [concrete] -// CHECK:STDOUT: %a.param_patt.58a: %pattern_type.f71 = value_param_pattern [concrete] -// CHECK:STDOUT: %a.patt.da1: %pattern_type.f71 = at_binding_pattern a, %a.param_patt.58a [concrete] -// CHECK:STDOUT: %bar__carbon_thunk.type: type = fn_type @bar__carbon_thunk [concrete] -// CHECK:STDOUT: %bar__carbon_thunk: %bar__carbon_thunk.type = struct_value () [concrete] -// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.type.ac8: type = fn_type @Int.as.Copy.impl.Op, @Int.as.Copy.impl(%N) [symbolic] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.5e0: %Int.as.Copy.impl.Op.type.ac8 = struct_value () [symbolic] -// CHECK:STDOUT: %Copy.impl_witness.7d9: = impl_witness imports.%Copy.impl_witness_table.367, @Int.as.Copy.impl(%int_16) [concrete] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.type.16c: type = fn_type @Int.as.Copy.impl.Op, @Int.as.Copy.impl(%int_16) [concrete] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.25c: %Int.as.Copy.impl.Op.type.16c = struct_value () [concrete] -// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %i16, (%Copy.impl_witness.7d9) [concrete] -// CHECK:STDOUT: %Copy.WithSelf.Op.type.332: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet) [concrete] -// CHECK:STDOUT: %.000: type = fn_type_with_self_type %Copy.WithSelf.Op.type.332, %Copy.facet [concrete] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.bound: = bound_method %int_1.d17, %Int.as.Copy.impl.Op.25c [concrete] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.specific_fn: = specific_function %Int.as.Copy.impl.Op.25c, @Int.as.Copy.impl.Op(%int_16) [concrete] -// CHECK:STDOUT: %bound_method.47b: = bound_method %int_1.d17, %Int.as.Copy.impl.Op.specific_fn [concrete] -// CHECK:STDOUT: %.597: ref %i16 = temporary invalid, %int_1.d17 [concrete] -// CHECK:STDOUT: %addr: %ptr.686 = addr_of %.597 [concrete] -// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Destroy.Op.type.1d8f74.2: type = fn_type @Destroy.Op.loc7_13.2 [concrete] -// CHECK:STDOUT: %Destroy.Op.1a2547.2: %Destroy.Op.type.1d8f74.2 = struct_value () [concrete] -// CHECK:STDOUT: %Destroy.Op.bound: = bound_method %.597, %Destroy.Op.1a2547.2 [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .As = %Core.As -// CHECK:STDOUT: .Copy = %Core.Copy -// CHECK:STDOUT: .Destroy = %Core.Destroy -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .bar = %bar.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %bar.cpp_overload_set.value: %bar.cpp_overload_set.type = cpp_overload_set_value @bar.cpp_overload_set [concrete = constants.%bar.cpp_overload_set.value] -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.As: %As.type.116 = import_ref Core//prelude/parts/as, As, loaded [concrete = constants.%As.generic] -// CHECK:STDOUT: %Core.import_ref.64b: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.c5d) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.6ee)] -// CHECK:STDOUT: %As.impl_witness_table.1c5 = impl_witness_table (%Core.import_ref.64b), @Core.IntLiteral.as.As.impl [concrete] -// CHECK:STDOUT: %bar__carbon_thunk.decl: %bar__carbon_thunk.type = fn_decl @bar__carbon_thunk [concrete = constants.%bar__carbon_thunk] { -// CHECK:STDOUT: %a.param_patt: %pattern_type.f71 = value_param_pattern [concrete = constants.%a.param_patt.58a] -// CHECK:STDOUT: %a.patt: %pattern_type.f71 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.da1] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %ptr.686 = value_param call_param0 -// CHECK:STDOUT: %.1: type = splice_block constants.%ptr.686 [concrete = constants.%ptr.686] { -// CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete = constants.%int_16] -// CHECK:STDOUT: %i16.1: type = class_type @Int, @Int(constants.%int_16) [concrete = constants.%i16] -// CHECK:STDOUT: %i16.2: type = type_literal %i16.1 [concrete = constants.%i16] -// CHECK:STDOUT: } -// CHECK:STDOUT: %a: %ptr.686 = wrapper_binding a, %a.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type] -// CHECK:STDOUT: %Core.import_ref.cd6: @Int.as.Copy.impl.%Int.as.Copy.impl.Op.type (%Int.as.Copy.impl.Op.type.ac8) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.Copy.impl.%Int.as.Copy.impl.Op (constants.%Int.as.Copy.impl.Op.5e0)] -// CHECK:STDOUT: %Copy.impl_witness_table.367 = impl_witness_table (%Core.import_ref.cd6), @Int.as.Copy.impl [concrete] -// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "multiple_functions_no_overloads.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %bar.ref: %bar.cpp_overload_set.type = name_ref bar, imports.%bar.cpp_overload_set.value [concrete = constants.%bar.cpp_overload_set.value] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %i16: type = type_literal constants.%i16 [concrete = constants.%i16] -// CHECK:STDOUT: %impl.elem0.loc7_13.1: %.6b5 = impl_witness_access constants.%As.impl_witness.820, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.70c] -// CHECK:STDOUT: %bound_method.loc7_13.1: = bound_method %int_1, %impl.elem0.loc7_13.1 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] -// CHECK:STDOUT: %specific_fn.loc7_13.1: = specific_function %impl.elem0.loc7_13.1, @Core.IntLiteral.as.As.impl.Convert(constants.%int_16) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc7_13.2: = bound_method %int_1, %specific_fn.loc7_13.1 [concrete = constants.%bound_method.a0f] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i16 = call %bound_method.loc7_13.2(%int_1) [concrete = constants.%int_1.d17] -// CHECK:STDOUT: %.loc7_13.1: %i16 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.d17] -// CHECK:STDOUT: %.loc7_13.2: %i16 = converted %int_1, %.loc7_13.1 [concrete = constants.%int_1.d17] -// CHECK:STDOUT: %impl.elem0.loc7_13.2: %.000 = impl_witness_access constants.%Copy.impl_witness.7d9, element0 [concrete = constants.%Int.as.Copy.impl.Op.25c] -// CHECK:STDOUT: %bound_method.loc7_13.3: = bound_method %.loc7_13.2, %impl.elem0.loc7_13.2 [concrete = constants.%Int.as.Copy.impl.Op.bound] -// CHECK:STDOUT: %specific_fn.loc7_13.2: = specific_function %impl.elem0.loc7_13.2, @Int.as.Copy.impl.Op(constants.%int_16) [concrete = constants.%Int.as.Copy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc7_13.4: = bound_method %.loc7_13.2, %specific_fn.loc7_13.2 [concrete = constants.%bound_method.47b] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.call: init %i16 = call %bound_method.loc7_13.4(%.loc7_13.2) [concrete = constants.%int_1.d17] -// CHECK:STDOUT: %.loc7_13.3: ref %i16 = temporary_storage -// CHECK:STDOUT: %.loc7_13.4: ref %i16 = temporary %.loc7_13.3, %Int.as.Copy.impl.Op.call [concrete = constants.%.597] -// CHECK:STDOUT: %addr: %ptr.686 = addr_of %.loc7_13.4 [concrete = constants.%addr] -// CHECK:STDOUT: %bar__carbon_thunk.call: init %empty_tuple.type = call imports.%bar__carbon_thunk.decl(%addr) -// CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call constants.%Destroy.Op.bound(constants.%.597) -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @bar(%a.param: %i16); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @bar__carbon_thunk(%a.param: %ptr.686); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc7_13.1(%self.param: ref %i16.builtin) = "no_op"; -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc7_13.2(%self.param: ref %i16) { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: --- import_overloaded_functions.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %As.type.116: type = generic_interface_type @As [concrete] -// CHECK:STDOUT: %As.generic: %As.type.116 = struct_value () [concrete] -// CHECK:STDOUT: %As.type.155: type = facet_type <@As, @As(%i32)> [concrete] -// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.c5d: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.6ee: %Core.IntLiteral.as.As.impl.Convert.type.c5d = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.03e: = impl_witness imports.%As.impl_witness_table.1c5, @Core.IntLiteral.as.As.impl(%int_32) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.e79: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_32) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.8a4: %Core.IntLiteral.as.As.impl.Convert.type.e79 = struct_value () [concrete] -// CHECK:STDOUT: %As.facet: %As.type.155 = facet_value Core.IntLiteral, (%As.impl_witness.03e) [concrete] -// CHECK:STDOUT: %As.WithSelf.Convert.type.8ea: type = fn_type @As.WithSelf.Convert, @As.WithSelf(%i32, %As.facet) [concrete] -// CHECK:STDOUT: %.fbc: type = fn_type_with_self_type %As.WithSelf.Convert.type.8ea, %As.facet [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.8a4 [concrete] -// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.8a4, @Core.IntLiteral.as.As.impl.Convert(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] -// CHECK:STDOUT: %int_1.0c6: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete] -// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete] -// CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] -// CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .As = %Core.As -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .foo = %foo.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.As: %As.type.116 = import_ref Core//prelude/parts/as, As, loaded [concrete = constants.%As.generic] -// CHECK:STDOUT: %Core.import_ref.64b: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.c5d) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.6ee)] -// CHECK:STDOUT: %As.impl_witness_table.1c5 = impl_witness_table (%Core.import_ref.64b), @Core.IntLiteral.as.As.impl [concrete] -// CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] { -// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt] -// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.1: type = splice_block %i32.2 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.1: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %i32.2: type = type_literal %i32.1 [concrete = constants.%i32] -// CHECK:STDOUT: } -// CHECK:STDOUT: %a: %i32 = wrapper_binding a, %a.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "overloaded_functions.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0: %.fbc = impl_witness_access constants.%As.impl_witness.03e, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.8a4] -// CHECK:STDOUT: %bound_method.loc7_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.As.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc7_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i32 = call %bound_method.loc7_13.2(%int_1) [concrete = constants.%int_1.0c6] -// CHECK:STDOUT: %.loc7_13.1: %i32 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.0c6] -// CHECK:STDOUT: %.loc7_13.2: %i32 = converted %int_1, %.loc7_13.1 [concrete = constants.%int_1.0c6] -// CHECK:STDOUT: %foo.call: init %empty_tuple.type = call imports.%foo.decl(%.loc7_13.2) -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @foo(%a.param: %i32); -// CHECK:STDOUT: -// CHECK:STDOUT: --- import_both_overloaded_functions_called.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %As.type.116: type = generic_interface_type @As [concrete] -// CHECK:STDOUT: %As.generic: %As.type.116 = struct_value () [concrete] -// CHECK:STDOUT: %As.type.155: type = facet_type <@As, @As(%i32)> [concrete] -// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.c5d: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.6ee: %Core.IntLiteral.as.As.impl.Convert.type.c5d = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.03e: = impl_witness imports.%As.impl_witness_table.1c5, @Core.IntLiteral.as.As.impl(%int_32) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.e79: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_32) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.8a4: %Core.IntLiteral.as.As.impl.Convert.type.e79 = struct_value () [concrete] -// CHECK:STDOUT: %As.facet.f96: %As.type.155 = facet_value Core.IntLiteral, (%As.impl_witness.03e) [concrete] -// CHECK:STDOUT: %As.WithSelf.Convert.type.8ea: type = fn_type @As.WithSelf.Convert, @As.WithSelf(%i32, %As.facet.f96) [concrete] -// CHECK:STDOUT: %.fbc: type = fn_type_with_self_type %As.WithSelf.Convert.type.8ea, %As.facet.f96 [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound.3a0: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.8a4 [concrete] -// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn.923: = specific_function %Core.IntLiteral.as.As.impl.Convert.8a4, @Core.IntLiteral.as.As.impl.Convert(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.18b: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn.923 [concrete] -// CHECK:STDOUT: %int_1.0c6: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %a.param_patt.93f: %pattern_type.6b6 = value_param_pattern [concrete] -// CHECK:STDOUT: %a.patt.28e: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt.93f [concrete] -// CHECK:STDOUT: %foo.type.6d9caa.1: type = fn_type @foo.1 [concrete] -// CHECK:STDOUT: %foo.627376.1: %foo.type.6d9caa.1 = struct_value () [concrete] -// CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete] -// CHECK:STDOUT: %i16: type = class_type @Int, @Int(%int_16) [concrete] -// CHECK:STDOUT: %i16.builtin: type = int_type signed, %int_16 [concrete] -// CHECK:STDOUT: %As.type.6f1: type = facet_type <@As, @As(%i16)> [concrete] -// CHECK:STDOUT: %As.impl_witness.820: = impl_witness imports.%As.impl_witness_table.1c5, @Core.IntLiteral.as.As.impl(%int_16) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.4b7: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_16) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.70c: %Core.IntLiteral.as.As.impl.Convert.type.4b7 = struct_value () [concrete] -// CHECK:STDOUT: %As.facet.bdf: %As.type.6f1 = facet_value Core.IntLiteral, (%As.impl_witness.820) [concrete] -// CHECK:STDOUT: %As.WithSelf.Convert.type.d73: type = fn_type @As.WithSelf.Convert, @As.WithSelf(%i16, %As.facet.bdf) [concrete] -// CHECK:STDOUT: %.6b5: type = fn_type_with_self_type %As.WithSelf.Convert.type.d73, %As.facet.bdf [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound.544: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.70c [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn.07a: = specific_function %Core.IntLiteral.as.As.impl.Convert.70c, @Core.IntLiteral.as.As.impl.Convert(%int_16) [concrete] -// CHECK:STDOUT: %bound_method.a0f: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn.07a [concrete] -// CHECK:STDOUT: %int_1.d17: %i16 = int_value 1 [concrete] -// CHECK:STDOUT: %ptr.686: type = ptr_type %i16 [concrete] -// CHECK:STDOUT: %pattern_type.f71: type = pattern_type %ptr.686 [concrete] -// CHECK:STDOUT: %a.param_patt.58a: %pattern_type.f71 = value_param_pattern [concrete] -// CHECK:STDOUT: %a.patt.da1: %pattern_type.f71 = at_binding_pattern a, %a.param_patt.58a [concrete] -// CHECK:STDOUT: %foo__carbon_thunk.type: type = fn_type @foo__carbon_thunk [concrete] -// CHECK:STDOUT: %foo__carbon_thunk: %foo__carbon_thunk.type = struct_value () [concrete] -// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.type.ac8: type = fn_type @Int.as.Copy.impl.Op, @Int.as.Copy.impl(%N) [symbolic] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.5e0: %Int.as.Copy.impl.Op.type.ac8 = struct_value () [symbolic] -// CHECK:STDOUT: %Copy.impl_witness.7d9: = impl_witness imports.%Copy.impl_witness_table.367, @Int.as.Copy.impl(%int_16) [concrete] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.type.16c: type = fn_type @Int.as.Copy.impl.Op, @Int.as.Copy.impl(%int_16) [concrete] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.25c: %Int.as.Copy.impl.Op.type.16c = struct_value () [concrete] -// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %i16, (%Copy.impl_witness.7d9) [concrete] -// CHECK:STDOUT: %Copy.WithSelf.Op.type.332: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet) [concrete] -// CHECK:STDOUT: %.000: type = fn_type_with_self_type %Copy.WithSelf.Op.type.332, %Copy.facet [concrete] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.bound: = bound_method %int_1.d17, %Int.as.Copy.impl.Op.25c [concrete] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.specific_fn: = specific_function %Int.as.Copy.impl.Op.25c, @Int.as.Copy.impl.Op(%int_16) [concrete] -// CHECK:STDOUT: %bound_method.47b: = bound_method %int_1.d17, %Int.as.Copy.impl.Op.specific_fn [concrete] -// CHECK:STDOUT: %.597: ref %i16 = temporary invalid, %int_1.d17 [concrete] -// CHECK:STDOUT: %addr: %ptr.686 = addr_of %.597 [concrete] -// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Destroy.Op.type.1d8f74.2: type = fn_type @Destroy.Op.loc8_13.2 [concrete] -// CHECK:STDOUT: %Destroy.Op.1a2547.2: %Destroy.Op.type.1d8f74.2 = struct_value () [concrete] -// CHECK:STDOUT: %Destroy.Op.bound: = bound_method %.597, %Destroy.Op.1a2547.2 [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .As = %Core.As -// CHECK:STDOUT: .Copy = %Core.Copy -// CHECK:STDOUT: .Destroy = %Core.Destroy -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .foo = %foo.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.As: %As.type.116 = import_ref Core//prelude/parts/as, As, loaded [concrete = constants.%As.generic] -// CHECK:STDOUT: %Core.import_ref.64b: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.c5d) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.6ee)] -// CHECK:STDOUT: %As.impl_witness_table.1c5 = impl_witness_table (%Core.import_ref.64b), @Core.IntLiteral.as.As.impl [concrete] -// CHECK:STDOUT: %foo.decl.6431a3.1: %foo.type.6d9caa.1 = fn_decl @foo.1 [concrete = constants.%foo.627376.1] { -// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt.93f] -// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.28e] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.1: type = splice_block %i32.2 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.1: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %i32.2: type = type_literal %i32.1 [concrete = constants.%i32] -// CHECK:STDOUT: } -// CHECK:STDOUT: %a: %i32 = wrapper_binding a, %a.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %foo__carbon_thunk.decl: %foo__carbon_thunk.type = fn_decl @foo__carbon_thunk [concrete = constants.%foo__carbon_thunk] { -// CHECK:STDOUT: %a.param_patt: %pattern_type.f71 = value_param_pattern [concrete = constants.%a.param_patt.58a] -// CHECK:STDOUT: %a.patt: %pattern_type.f71 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.da1] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %ptr.686 = value_param call_param0 -// CHECK:STDOUT: %.1: type = splice_block constants.%ptr.686 [concrete = constants.%ptr.686] { -// CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete = constants.%int_16] -// CHECK:STDOUT: %i16.1: type = class_type @Int, @Int(constants.%int_16) [concrete = constants.%i16] -// CHECK:STDOUT: %i16.2: type = type_literal %i16.1 [concrete = constants.%i16] -// CHECK:STDOUT: } -// CHECK:STDOUT: %a: %ptr.686 = wrapper_binding a, %a.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type] -// CHECK:STDOUT: %Core.import_ref.cd6: @Int.as.Copy.impl.%Int.as.Copy.impl.Op.type (%Int.as.Copy.impl.Op.type.ac8) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.Copy.impl.%Int.as.Copy.impl.Op (constants.%Int.as.Copy.impl.Op.5e0)] -// CHECK:STDOUT: %Copy.impl_witness_table.367 = impl_witness_table (%Core.import_ref.cd6), @Int.as.Copy.impl [concrete] -// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "both_overloaded_functions_called.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref.loc7: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref.loc7: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_1.loc7: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc7: %.fbc = impl_witness_access constants.%As.impl_witness.03e, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.8a4] -// CHECK:STDOUT: %bound_method.loc7_13.1: = bound_method %int_1.loc7, %impl.elem0.loc7 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound.3a0] -// CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Core.IntLiteral.as.As.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn.923] -// CHECK:STDOUT: %bound_method.loc7_13.2: = bound_method %int_1.loc7, %specific_fn.loc7 [concrete = constants.%bound_method.18b] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call.loc7: init %i32 = call %bound_method.loc7_13.2(%int_1.loc7) [concrete = constants.%int_1.0c6] -// CHECK:STDOUT: %.loc7_13.1: %i32 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call.loc7 [concrete = constants.%int_1.0c6] -// CHECK:STDOUT: %.loc7_13.2: %i32 = converted %int_1.loc7, %.loc7_13.1 [concrete = constants.%int_1.0c6] -// CHECK:STDOUT: %foo.call: init %empty_tuple.type = call imports.%foo.decl.6431a3.1(%.loc7_13.2) -// CHECK:STDOUT: %Cpp.ref.loc8: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref.loc8: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_1.loc8: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %i16: type = type_literal constants.%i16 [concrete = constants.%i16] -// CHECK:STDOUT: %impl.elem0.loc8_13.1: %.6b5 = impl_witness_access constants.%As.impl_witness.820, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.70c] -// CHECK:STDOUT: %bound_method.loc8_13.1: = bound_method %int_1.loc8, %impl.elem0.loc8_13.1 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound.544] -// CHECK:STDOUT: %specific_fn.loc8_13.1: = specific_function %impl.elem0.loc8_13.1, @Core.IntLiteral.as.As.impl.Convert(constants.%int_16) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn.07a] -// CHECK:STDOUT: %bound_method.loc8_13.2: = bound_method %int_1.loc8, %specific_fn.loc8_13.1 [concrete = constants.%bound_method.a0f] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call.loc8: init %i16 = call %bound_method.loc8_13.2(%int_1.loc8) [concrete = constants.%int_1.d17] -// CHECK:STDOUT: %.loc8_13.1: %i16 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call.loc8 [concrete = constants.%int_1.d17] -// CHECK:STDOUT: %.loc8_13.2: %i16 = converted %int_1.loc8, %.loc8_13.1 [concrete = constants.%int_1.d17] -// CHECK:STDOUT: %impl.elem0.loc8_13.2: %.000 = impl_witness_access constants.%Copy.impl_witness.7d9, element0 [concrete = constants.%Int.as.Copy.impl.Op.25c] -// CHECK:STDOUT: %bound_method.loc8_13.3: = bound_method %.loc8_13.2, %impl.elem0.loc8_13.2 [concrete = constants.%Int.as.Copy.impl.Op.bound] -// CHECK:STDOUT: %specific_fn.loc8_13.2: = specific_function %impl.elem0.loc8_13.2, @Int.as.Copy.impl.Op(constants.%int_16) [concrete = constants.%Int.as.Copy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc8_13.4: = bound_method %.loc8_13.2, %specific_fn.loc8_13.2 [concrete = constants.%bound_method.47b] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.call: init %i16 = call %bound_method.loc8_13.4(%.loc8_13.2) [concrete = constants.%int_1.d17] -// CHECK:STDOUT: %.loc8_13.3: ref %i16 = temporary_storage -// CHECK:STDOUT: %.loc8_13.4: ref %i16 = temporary %.loc8_13.3, %Int.as.Copy.impl.Op.call [concrete = constants.%.597] -// CHECK:STDOUT: %addr: %ptr.686 = addr_of %.loc8_13.4 [concrete = constants.%addr] -// CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr) -// CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call constants.%Destroy.Op.bound(constants.%.597) -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @foo.1(%a.param: %i32); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @foo.2(%a.param: %i16); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @foo__carbon_thunk(%a.param: %ptr.686); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc8_13.1(%self.param: ref %i16.builtin) = "no_op"; -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc8_13.2(%self.param: ref %i16) { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: --- import_multiple_overloaded_sets.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %As.type.116: type = generic_interface_type @As [concrete] -// CHECK:STDOUT: %As.generic: %As.type.116 = struct_value () [concrete] -// CHECK:STDOUT: %As.type.155: type = facet_type <@As, @As(%i32)> [concrete] -// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.c5d: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.6ee: %Core.IntLiteral.as.As.impl.Convert.type.c5d = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.03e: = impl_witness imports.%As.impl_witness_table.1c5, @Core.IntLiteral.as.As.impl(%int_32) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.e79: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_32) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.8a4: %Core.IntLiteral.as.As.impl.Convert.type.e79 = struct_value () [concrete] -// CHECK:STDOUT: %As.facet: %As.type.155 = facet_value Core.IntLiteral, (%As.impl_witness.03e) [concrete] -// CHECK:STDOUT: %As.WithSelf.Convert.type.8ea: type = fn_type @As.WithSelf.Convert, @As.WithSelf(%i32, %As.facet) [concrete] -// CHECK:STDOUT: %.fbc: type = fn_type_with_self_type %As.WithSelf.Convert.type.8ea, %As.facet [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.8a4 [concrete] -// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.8a4, @Core.IntLiteral.as.As.impl.Convert(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] -// CHECK:STDOUT: %int_1.0c6: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete] -// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete] -// CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] -// CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] -// CHECK:STDOUT: %bar.cpp_overload_set.type: type = cpp_overload_set_type @bar.cpp_overload_set [concrete] -// CHECK:STDOUT: %bar.cpp_overload_set.value: %bar.cpp_overload_set.type = cpp_overload_set_value @bar.cpp_overload_set [concrete] -// CHECK:STDOUT: %bar.type: type = fn_type @bar [concrete] -// CHECK:STDOUT: %bar: %bar.type = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .As = %Core.As -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .foo = %foo.cpp_overload_set.value -// CHECK:STDOUT: .bar = %bar.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.As: %As.type.116 = import_ref Core//prelude/parts/as, As, loaded [concrete = constants.%As.generic] -// CHECK:STDOUT: %Core.import_ref.64b: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.c5d) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.6ee)] -// CHECK:STDOUT: %As.impl_witness_table.1c5 = impl_witness_table (%Core.import_ref.64b), @Core.IntLiteral.as.As.impl [concrete] -// CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] { -// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt] -// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.1: type = splice_block %i32.2 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.1: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %i32.2: type = type_literal %i32.1 [concrete = constants.%i32] -// CHECK:STDOUT: } -// CHECK:STDOUT: %a: %i32 = wrapper_binding a, %a.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %bar.cpp_overload_set.value: %bar.cpp_overload_set.type = cpp_overload_set_value @bar.cpp_overload_set [concrete = constants.%bar.cpp_overload_set.value] -// CHECK:STDOUT: %bar.decl: %bar.type = fn_decl @bar [concrete = constants.%bar] { -// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt] -// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.1: type = splice_block %i32.2 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.1: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %i32.2: type = type_literal %i32.1 [concrete = constants.%i32] -// CHECK:STDOUT: } -// CHECK:STDOUT: %a: %i32 = wrapper_binding a, %a.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "multiple_overloaded_sets.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref.loc7: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_1.loc7: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %i32.loc7: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc7: %.fbc = impl_witness_access constants.%As.impl_witness.03e, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.8a4] -// CHECK:STDOUT: %bound_method.loc7_13.1: = bound_method %int_1.loc7, %impl.elem0.loc7 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] -// CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Core.IntLiteral.as.As.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc7_13.2: = bound_method %int_1.loc7, %specific_fn.loc7 [concrete = constants.%bound_method] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call.loc7: init %i32 = call %bound_method.loc7_13.2(%int_1.loc7) [concrete = constants.%int_1.0c6] -// CHECK:STDOUT: %.loc7_13.1: %i32 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call.loc7 [concrete = constants.%int_1.0c6] -// CHECK:STDOUT: %.loc7_13.2: %i32 = converted %int_1.loc7, %.loc7_13.1 [concrete = constants.%int_1.0c6] -// CHECK:STDOUT: %foo.call: init %empty_tuple.type = call imports.%foo.decl(%.loc7_13.2) -// CHECK:STDOUT: %Cpp.ref.loc8: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %bar.ref: %bar.cpp_overload_set.type = name_ref bar, imports.%bar.cpp_overload_set.value [concrete = constants.%bar.cpp_overload_set.value] -// CHECK:STDOUT: %int_1.loc8: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %i32.loc8: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc8: %.fbc = impl_witness_access constants.%As.impl_witness.03e, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.8a4] -// CHECK:STDOUT: %bound_method.loc8_13.1: = bound_method %int_1.loc8, %impl.elem0.loc8 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] -// CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Core.IntLiteral.as.As.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc8_13.2: = bound_method %int_1.loc8, %specific_fn.loc8 [concrete = constants.%bound_method] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call.loc8: init %i32 = call %bound_method.loc8_13.2(%int_1.loc8) [concrete = constants.%int_1.0c6] -// CHECK:STDOUT: %.loc8_13.1: %i32 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call.loc8 [concrete = constants.%int_1.0c6] -// CHECK:STDOUT: %.loc8_13.2: %i32 = converted %int_1.loc8, %.loc8_13.1 [concrete = constants.%int_1.0c6] -// CHECK:STDOUT: %bar.call: init %empty_tuple.type = call imports.%bar.decl(%.loc8_13.2) -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @foo(%a.param: %i32); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @bar(%a.param: %i32); -// CHECK:STDOUT: -// CHECK:STDOUT: --- import_int_literal.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %a.patt.bb2: %pattern_type.6b6 = value_binding_pattern a [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %int_2147483647.d89: Core.IntLiteral = int_value 2147483647 [concrete] -// CHECK:STDOUT: %a.param_patt.93f: %pattern_type.6b6 = value_param_pattern [concrete] -// CHECK:STDOUT: %a.patt.28e: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt.93f [concrete] -// CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete] -// CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete] -// CHECK:STDOUT: %foo.type.6d9caa.1: type = fn_type @foo.1 [concrete] -// CHECK:STDOUT: %foo.627376.1: %foo.type.6d9caa.1 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.914: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.845: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.a23: = impl_witness imports.%ImplicitAs.impl_witness_table.b3c, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.2ba: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.2ba = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.9f1: %ImplicitAs.type.914 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.a23) [concrete] -// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.740: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i32, %ImplicitAs.facet.9f1) [concrete] -// CHECK:STDOUT: %.1c5: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.740, %ImplicitAs.facet.9f1 [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.91c: = bound_method %int_2147483647.d89, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39 [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn.571: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.777: = bound_method %int_2147483647.d89, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn.571 [concrete] -// CHECK:STDOUT: %int_2147483647.a0e: %i32 = int_value 2147483647 [concrete] -// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] -// CHECK:STDOUT: %i64: type = class_type @Int, @Int(%int_64) [concrete] -// CHECK:STDOUT: %pattern_type.f57: type = pattern_type %i64 [concrete] -// CHECK:STDOUT: %b.patt: %pattern_type.f57 = value_binding_pattern b [concrete] -// CHECK:STDOUT: %int_2147483648.1db: Core.IntLiteral = int_value 2147483648 [concrete] -// CHECK:STDOUT: %a.param_patt.089: %pattern_type.f57 = value_param_pattern [concrete] -// CHECK:STDOUT: %a.patt.71e: %pattern_type.f57 = at_binding_pattern a, %a.param_patt.089 [concrete] -// CHECK:STDOUT: %return.param_patt.cfc: %pattern_type.f57 = out_param_pattern [concrete] -// CHECK:STDOUT: %return.patt.178: %pattern_type.f57 = return_slot_pattern %return.param_patt.cfc, %i64 [concrete] -// CHECK:STDOUT: %foo.type.6d9caa.2: type = fn_type @foo.2 [concrete] -// CHECK:STDOUT: %foo.627376.2: %foo.type.6d9caa.2 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.221: type = facet_type <@ImplicitAs, @ImplicitAs(%i64)> [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.091: = impl_witness imports.%ImplicitAs.impl_witness_table.b3c, @Core.IntLiteral.as.ImplicitAs.impl(%int_64) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.55a: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_64) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.a1b: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.55a = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.6e8: %ImplicitAs.type.221 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.091) [concrete] -// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.a04: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i64, %ImplicitAs.facet.6e8) [concrete] -// CHECK:STDOUT: %.f34: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.a04, %ImplicitAs.facet.6e8 [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.f98: = bound_method %int_2147483648.1db, %Core.IntLiteral.as.ImplicitAs.impl.Convert.a1b [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn.f33: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.a1b, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_64) [concrete] -// CHECK:STDOUT: %bound_method.2c2: = bound_method %int_2147483648.1db, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn.f33 [concrete] -// CHECK:STDOUT: %int_2147483648.f59: %i64 = int_value 2147483648 [concrete] -// CHECK:STDOUT: %b_hexa.patt: %pattern_type.f57 = value_binding_pattern b_hexa [concrete] -// CHECK:STDOUT: %b_binary.patt: %pattern_type.f57 = value_binding_pattern b_binary [concrete] -// CHECK:STDOUT: %c.patt: %pattern_type.f57 = value_binding_pattern c [concrete] -// CHECK:STDOUT: %int_9223372036854775807.e6f: Core.IntLiteral = int_value 9223372036854775807 [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.fc8: = bound_method %int_9223372036854775807.e6f, %Core.IntLiteral.as.ImplicitAs.impl.Convert.a1b [concrete] -// CHECK:STDOUT: %bound_method.e30: = bound_method %int_9223372036854775807.e6f, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn.f33 [concrete] -// CHECK:STDOUT: %int_9223372036854775807.045: %i64 = int_value 9223372036854775807 [concrete] -// CHECK:STDOUT: %int_128: Core.IntLiteral = int_value 128 [concrete] -// CHECK:STDOUT: %i128: type = class_type @Int, @Int(%int_128) [concrete] -// CHECK:STDOUT: %i128.builtin: type = int_type signed, %int_128 [concrete] -// CHECK:STDOUT: %pattern_type.97f: type = pattern_type %i128 [concrete] -// CHECK:STDOUT: %d.patt: %pattern_type.97f = value_binding_pattern d [concrete] -// CHECK:STDOUT: %int_9223372036854775808.293: Core.IntLiteral = int_value 9223372036854775808 [concrete] -// CHECK:STDOUT: %ptr.19c: type = ptr_type %i128 [concrete] -// CHECK:STDOUT: %pattern_type.c1e: type = pattern_type %ptr.19c [concrete] -// CHECK:STDOUT: %a.param_patt.aed: %pattern_type.c1e = value_param_pattern [concrete] -// CHECK:STDOUT: %a.patt.26e: %pattern_type.c1e = at_binding_pattern a, %a.param_patt.aed [concrete] -// CHECK:STDOUT: %return.param_patt.513: %pattern_type.c1e = value_param_pattern [concrete] -// CHECK:STDOUT: %return.patt.a21: %pattern_type.c1e = at_binding_pattern r#return, %return.param_patt.513 [concrete] -// CHECK:STDOUT: %foo__carbon_thunk.type: type = fn_type @foo__carbon_thunk [concrete] -// CHECK:STDOUT: %foo__carbon_thunk: %foo__carbon_thunk.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.be8: type = facet_type <@ImplicitAs, @ImplicitAs(%i128)> [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.2c8: = impl_witness imports.%ImplicitAs.impl_witness_table.b3c, @Core.IntLiteral.as.ImplicitAs.impl(%int_128) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.9bf: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_128) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.c6b: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.9bf = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.4c7: %ImplicitAs.type.be8 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.2c8) [concrete] -// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.450: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i128, %ImplicitAs.facet.4c7) [concrete] -// CHECK:STDOUT: %.2ea: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.450, %ImplicitAs.facet.4c7 [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.64f: = bound_method %int_9223372036854775808.293, %Core.IntLiteral.as.ImplicitAs.impl.Convert.c6b [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn.be8: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.c6b, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_128) [concrete] -// CHECK:STDOUT: %bound_method.5d3: = bound_method %int_9223372036854775808.293, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn.be8 [concrete] -// CHECK:STDOUT: %int_9223372036854775808.c39: %i128 = int_value 9223372036854775808 [concrete] -// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.type.ac8: type = fn_type @Int.as.Copy.impl.Op, @Int.as.Copy.impl(%N) [symbolic] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.5e0: %Int.as.Copy.impl.Op.type.ac8 = struct_value () [symbolic] -// CHECK:STDOUT: %Copy.impl_witness.952: = impl_witness imports.%Copy.impl_witness_table.367, @Int.as.Copy.impl(%int_128) [concrete] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.type.c0f: type = fn_type @Int.as.Copy.impl.Op, @Int.as.Copy.impl(%int_128) [concrete] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.4fd: %Int.as.Copy.impl.Op.type.c0f = struct_value () [concrete] -// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %i128, (%Copy.impl_witness.952) [concrete] -// CHECK:STDOUT: %Copy.WithSelf.Op.type.9c8: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet) [concrete] -// CHECK:STDOUT: %.858: type = fn_type_with_self_type %Copy.WithSelf.Op.type.9c8, %Copy.facet [concrete] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.bound.6d1: = bound_method %int_9223372036854775808.c39, %Int.as.Copy.impl.Op.4fd [concrete] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.specific_fn: = specific_function %Int.as.Copy.impl.Op.4fd, @Int.as.Copy.impl.Op(%int_128) [concrete] -// CHECK:STDOUT: %bound_method.ddb: = bound_method %int_9223372036854775808.c39, %Int.as.Copy.impl.Op.specific_fn [concrete] -// CHECK:STDOUT: %.e05: ref %i128 = temporary invalid, %int_9223372036854775808.c39 [concrete] -// CHECK:STDOUT: %addr.ac7: %ptr.19c = addr_of %.e05 [concrete] -// CHECK:STDOUT: %e.patt: %pattern_type.97f = value_binding_pattern e [concrete] -// CHECK:STDOUT: %int_18446744073709551615.5ec: Core.IntLiteral = int_value 18446744073709551615 [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.8ee: = bound_method %int_18446744073709551615.5ec, %Core.IntLiteral.as.ImplicitAs.impl.Convert.c6b [concrete] -// CHECK:STDOUT: %bound_method.5ac: = bound_method %int_18446744073709551615.5ec, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn.be8 [concrete] -// CHECK:STDOUT: %int_18446744073709551615.278: %i128 = int_value 18446744073709551615 [concrete] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.bound.4e4: = bound_method %int_18446744073709551615.278, %Int.as.Copy.impl.Op.4fd [concrete] -// CHECK:STDOUT: %bound_method.181: = bound_method %int_18446744073709551615.278, %Int.as.Copy.impl.Op.specific_fn [concrete] -// CHECK:STDOUT: %.6dc: ref %i128 = temporary invalid, %int_18446744073709551615.278 [concrete] -// CHECK:STDOUT: %addr.fb9: %ptr.19c = addr_of %.6dc [concrete] -// CHECK:STDOUT: %f.patt: %pattern_type.97f = value_binding_pattern f [concrete] -// CHECK:STDOUT: %int_18446744073709551616.1ee: Core.IntLiteral = int_value 18446744073709551616 [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.f7c: = bound_method %int_18446744073709551616.1ee, %Core.IntLiteral.as.ImplicitAs.impl.Convert.c6b [concrete] -// CHECK:STDOUT: %bound_method.e5e: = bound_method %int_18446744073709551616.1ee, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn.be8 [concrete] -// CHECK:STDOUT: %int_18446744073709551616.9ff: %i128 = int_value 18446744073709551616 [concrete] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.bound.776: = bound_method %int_18446744073709551616.9ff, %Int.as.Copy.impl.Op.4fd [concrete] -// CHECK:STDOUT: %bound_method.b9e: = bound_method %int_18446744073709551616.9ff, %Int.as.Copy.impl.Op.specific_fn [concrete] -// CHECK:STDOUT: %.579: ref %i128 = temporary invalid, %int_18446744073709551616.9ff [concrete] -// CHECK:STDOUT: %addr.cbf: %ptr.19c = addr_of %.579 [concrete] -// CHECK:STDOUT: %g.patt: %pattern_type.97f = value_binding_pattern g [concrete] -// CHECK:STDOUT: %int_170141183460469231731687303715884105727.fea: Core.IntLiteral = int_value 170141183460469231731687303715884105727 [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.6a6: = bound_method %int_170141183460469231731687303715884105727.fea, %Core.IntLiteral.as.ImplicitAs.impl.Convert.c6b [concrete] -// CHECK:STDOUT: %bound_method.537: = bound_method %int_170141183460469231731687303715884105727.fea, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn.be8 [concrete] -// CHECK:STDOUT: %int_170141183460469231731687303715884105727.a76: %i128 = int_value 170141183460469231731687303715884105727 [concrete] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.bound.61b: = bound_method %int_170141183460469231731687303715884105727.a76, %Int.as.Copy.impl.Op.4fd [concrete] -// CHECK:STDOUT: %bound_method.5a5: = bound_method %int_170141183460469231731687303715884105727.a76, %Int.as.Copy.impl.Op.specific_fn [concrete] -// CHECK:STDOUT: %.dc9: ref %i128 = temporary invalid, %int_170141183460469231731687303715884105727.a76 [concrete] -// CHECK:STDOUT: %addr.882: %ptr.19c = addr_of %.dc9 [concrete] -// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Destroy.Op.type.1d8f74.2: type = fn_type @Destroy.Op.loc31_71.2 [concrete] -// CHECK:STDOUT: %Destroy.Op.1a2547.2: %Destroy.Op.type.1d8f74.2 = struct_value () [concrete] -// CHECK:STDOUT: %Destroy.Op.bound.741: = bound_method %.dc9, %Destroy.Op.1a2547.2 [concrete] -// CHECK:STDOUT: %Destroy.Op.bound.bb1: = bound_method %.579, %Destroy.Op.1a2547.2 [concrete] -// CHECK:STDOUT: %Destroy.Op.bound.958: = bound_method %.6dc, %Destroy.Op.1a2547.2 [concrete] -// CHECK:STDOUT: %Destroy.Op.bound.eaa: = bound_method %.e05, %Destroy.Op.1a2547.2 [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: .Copy = %Core.Copy -// CHECK:STDOUT: .Destroy = %Core.Destroy -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .foo = %foo.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %foo.decl.6431a3.1: %foo.type.6d9caa.1 = fn_decl @foo.1 [concrete = constants.%foo.627376.1] { -// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt.93f] -// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.28e] -// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a] -// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.2 [concrete = constants.%return.patt.e1b] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32.1: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.1: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %i32.2: type = type_literal %i32.1 [concrete = constants.%i32] -// CHECK:STDOUT: %a.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.1: type = splice_block %i32.4 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.2: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.3: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %i32.4: type = type_literal %i32.3 [concrete = constants.%i32] -// CHECK:STDOUT: } -// CHECK:STDOUT: %a: %i32 = wrapper_binding a, %a.param -// CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 -// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.edf: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.845)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.b3c = impl_witness_table (%Core.import_ref.edf), @Core.IntLiteral.as.ImplicitAs.impl [concrete] -// CHECK:STDOUT: %foo.decl.6431a3.2: %foo.type.6d9caa.2 = fn_decl @foo.2 [concrete = constants.%foo.627376.2] { -// CHECK:STDOUT: %a.param_patt: %pattern_type.f57 = value_param_pattern [concrete = constants.%a.param_patt.089] -// CHECK:STDOUT: %a.patt: %pattern_type.f57 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.71e] -// CHECK:STDOUT: %return.param_patt: %pattern_type.f57 = out_param_pattern [concrete = constants.%return.param_patt.cfc] -// CHECK:STDOUT: %return.patt: %pattern_type.f57 = return_slot_pattern %return.param_patt, %i64.2 [concrete = constants.%return.patt.178] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %int_64.1: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] -// CHECK:STDOUT: %i64.1: type = class_type @Int, @Int(constants.%int_64) [concrete = constants.%i64] -// CHECK:STDOUT: %i64.2: type = type_literal %i64.1 [concrete = constants.%i64] -// CHECK:STDOUT: %a.param: %i64 = value_param call_param0 -// CHECK:STDOUT: %.1: type = splice_block %i64.4 [concrete = constants.%i64] { -// CHECK:STDOUT: %int_64.2: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] -// CHECK:STDOUT: %i64.3: type = class_type @Int, @Int(constants.%int_64) [concrete = constants.%i64] -// CHECK:STDOUT: %i64.4: type = type_literal %i64.3 [concrete = constants.%i64] -// CHECK:STDOUT: } -// CHECK:STDOUT: %a: %i64 = wrapper_binding a, %a.param -// CHECK:STDOUT: %return.param: ref %i64 = out_param call_param1 -// CHECK:STDOUT: %return: ref %i64 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %foo__carbon_thunk.decl: %foo__carbon_thunk.type = fn_decl @foo__carbon_thunk [concrete = constants.%foo__carbon_thunk] { -// CHECK:STDOUT: %a.param_patt: %pattern_type.c1e = value_param_pattern [concrete = constants.%a.param_patt.aed] -// CHECK:STDOUT: %a.patt: %pattern_type.c1e = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.26e] -// CHECK:STDOUT: %return.param_patt: %pattern_type.c1e = value_param_pattern [concrete = constants.%return.param_patt.513] -// CHECK:STDOUT: %return.patt: %pattern_type.c1e = at_binding_pattern r#return, %return.param_patt [concrete = constants.%return.patt.a21] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %ptr.19c = value_param call_param0 -// CHECK:STDOUT: %.1: type = splice_block constants.%ptr.19c [concrete = constants.%ptr.19c] { -// CHECK:STDOUT: %int_128.2: Core.IntLiteral = int_value 128 [concrete = constants.%int_128] -// CHECK:STDOUT: %i128.3: type = class_type @Int, @Int(constants.%int_128) [concrete = constants.%i128] -// CHECK:STDOUT: %i128.4: type = type_literal %i128.3 [concrete = constants.%i128] -// CHECK:STDOUT: } -// CHECK:STDOUT: %a: %ptr.19c = wrapper_binding a, %a.param -// CHECK:STDOUT: %return.param: %ptr.19c = value_param call_param1 -// CHECK:STDOUT: %.2: type = splice_block constants.%ptr.19c [concrete = constants.%ptr.19c] { -// CHECK:STDOUT: %int_128.1: Core.IntLiteral = int_value 128 [concrete = constants.%int_128] -// CHECK:STDOUT: %i128.1: type = class_type @Int, @Int(constants.%int_128) [concrete = constants.%i128] -// CHECK:STDOUT: %i128.2: type = type_literal %i128.1 [concrete = constants.%i128] -// CHECK:STDOUT: } -// CHECK:STDOUT: %return: %ptr.19c = wrapper_binding r#return, %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type] -// CHECK:STDOUT: %Core.import_ref.cd6: @Int.as.Copy.impl.%Int.as.Copy.impl.Op.type (%Int.as.Copy.impl.Op.type.ac8) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.Copy.impl.%Int.as.Copy.impl.Op (constants.%Int.as.Copy.impl.Op.5e0)] -// CHECK:STDOUT: %Copy.impl_witness_table.367 = impl_witness_table (%Core.import_ref.cd6), @Int.as.Copy.impl [concrete] -// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "int_literal.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref.loc8: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref.loc8: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_2147483647: Core.IntLiteral = int_value 2147483647 [concrete = constants.%int_2147483647.d89] -// CHECK:STDOUT: %impl.elem0.loc8: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] -// CHECK:STDOUT: %bound_method.loc8_31.1: = bound_method %int_2147483647, %impl.elem0.loc8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.91c] -// CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn.571] -// CHECK:STDOUT: %bound_method.loc8_31.2: = bound_method %int_2147483647, %specific_fn.loc8 [concrete = constants.%bound_method.777] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8: init %i32 = call %bound_method.loc8_31.2(%int_2147483647) [concrete = constants.%int_2147483647.a0e] -// CHECK:STDOUT: %.loc8_31.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8 [concrete = constants.%int_2147483647.a0e] -// CHECK:STDOUT: %.loc8_31.2: %i32 = converted %int_2147483647, %.loc8_31.1 [concrete = constants.%int_2147483647.a0e] -// CHECK:STDOUT: %foo.call.loc8: init %i32 = call imports.%foo.decl.6431a3.1(%.loc8_31.2) -// CHECK:STDOUT: %.loc8_41.1: %i32 = value_of_initializer %foo.call.loc8 -// CHECK:STDOUT: %.loc8_41.2: %i32 = converted %foo.call.loc8, %.loc8_41.1 -// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %a: %i32 = wrapper_binding a, %.loc8_41.2 -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = value_binding_pattern a [concrete = constants.%a.patt.bb2] -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp.ref.loc13: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref.loc13: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_2147483648.loc13: Core.IntLiteral = int_value 2147483648 [concrete = constants.%int_2147483648.1db] -// CHECK:STDOUT: %impl.elem0.loc13: %.f34 = impl_witness_access constants.%ImplicitAs.impl_witness.091, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a1b] -// CHECK:STDOUT: %bound_method.loc13_31.1: = bound_method %int_2147483648.loc13, %impl.elem0.loc13 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.f98] -// CHECK:STDOUT: %specific_fn.loc13: = specific_function %impl.elem0.loc13, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_64) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn.f33] -// CHECK:STDOUT: %bound_method.loc13_31.2: = bound_method %int_2147483648.loc13, %specific_fn.loc13 [concrete = constants.%bound_method.2c2] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc13: init %i64 = call %bound_method.loc13_31.2(%int_2147483648.loc13) [concrete = constants.%int_2147483648.f59] -// CHECK:STDOUT: %.loc13_31.1: %i64 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc13 [concrete = constants.%int_2147483648.f59] -// CHECK:STDOUT: %.loc13_31.2: %i64 = converted %int_2147483648.loc13, %.loc13_31.1 [concrete = constants.%int_2147483648.f59] -// CHECK:STDOUT: %foo.call.loc13: init %i64 = call imports.%foo.decl.6431a3.2(%.loc13_31.2) -// CHECK:STDOUT: %.loc13_41.1: %i64 = value_of_initializer %foo.call.loc13 -// CHECK:STDOUT: %.loc13_41.2: %i64 = converted %foo.call.loc13, %.loc13_41.1 -// CHECK:STDOUT: %i64.loc13: type = type_literal constants.%i64 [concrete = constants.%i64] -// CHECK:STDOUT: %b: %i64 = wrapper_binding b, %.loc13_41.2 -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %b.patt: %pattern_type.f57 = value_binding_pattern b [concrete = constants.%b.patt] -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp.ref.loc14: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref.loc14: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_2147483648.loc14: Core.IntLiteral = int_value 2147483648 [concrete = constants.%int_2147483648.1db] -// CHECK:STDOUT: %impl.elem0.loc14: %.f34 = impl_witness_access constants.%ImplicitAs.impl_witness.091, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a1b] -// CHECK:STDOUT: %bound_method.loc14_36.1: = bound_method %int_2147483648.loc14, %impl.elem0.loc14 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.f98] -// CHECK:STDOUT: %specific_fn.loc14: = specific_function %impl.elem0.loc14, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_64) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn.f33] -// CHECK:STDOUT: %bound_method.loc14_36.2: = bound_method %int_2147483648.loc14, %specific_fn.loc14 [concrete = constants.%bound_method.2c2] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14: init %i64 = call %bound_method.loc14_36.2(%int_2147483648.loc14) [concrete = constants.%int_2147483648.f59] -// CHECK:STDOUT: %.loc14_36.1: %i64 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc14 [concrete = constants.%int_2147483648.f59] -// CHECK:STDOUT: %.loc14_36.2: %i64 = converted %int_2147483648.loc14, %.loc14_36.1 [concrete = constants.%int_2147483648.f59] -// CHECK:STDOUT: %foo.call.loc14: init %i64 = call imports.%foo.decl.6431a3.2(%.loc14_36.2) -// CHECK:STDOUT: %.loc14_47.1: %i64 = value_of_initializer %foo.call.loc14 -// CHECK:STDOUT: %.loc14_47.2: %i64 = converted %foo.call.loc14, %.loc14_47.1 -// CHECK:STDOUT: %i64.loc14: type = type_literal constants.%i64 [concrete = constants.%i64] -// CHECK:STDOUT: %b_hexa: %i64 = wrapper_binding b_hexa, %.loc14_47.2 -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %b_hexa.patt: %pattern_type.f57 = value_binding_pattern b_hexa [concrete = constants.%b_hexa.patt] -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp.ref.loc15: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref.loc15: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_2147483648.loc15: Core.IntLiteral = int_value 2147483648 [concrete = constants.%int_2147483648.1db] -// CHECK:STDOUT: %impl.elem0.loc15: %.f34 = impl_witness_access constants.%ImplicitAs.impl_witness.091, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a1b] -// CHECK:STDOUT: %bound_method.loc15_38.1: = bound_method %int_2147483648.loc15, %impl.elem0.loc15 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.f98] -// CHECK:STDOUT: %specific_fn.loc15: = specific_function %impl.elem0.loc15, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_64) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn.f33] -// CHECK:STDOUT: %bound_method.loc15_38.2: = bound_method %int_2147483648.loc15, %specific_fn.loc15 [concrete = constants.%bound_method.2c2] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15: init %i64 = call %bound_method.loc15_38.2(%int_2147483648.loc15) [concrete = constants.%int_2147483648.f59] -// CHECK:STDOUT: %.loc15_38.1: %i64 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15 [concrete = constants.%int_2147483648.f59] -// CHECK:STDOUT: %.loc15_38.2: %i64 = converted %int_2147483648.loc15, %.loc15_38.1 [concrete = constants.%int_2147483648.f59] -// CHECK:STDOUT: %foo.call.loc15: init %i64 = call imports.%foo.decl.6431a3.2(%.loc15_38.2) -// CHECK:STDOUT: %.loc15_79.1: %i64 = value_of_initializer %foo.call.loc15 -// CHECK:STDOUT: %.loc15_79.2: %i64 = converted %foo.call.loc15, %.loc15_79.1 -// CHECK:STDOUT: %i64.loc15: type = type_literal constants.%i64 [concrete = constants.%i64] -// CHECK:STDOUT: %b_binary: %i64 = wrapper_binding b_binary, %.loc15_79.2 -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %b_binary.patt: %pattern_type.f57 = value_binding_pattern b_binary [concrete = constants.%b_binary.patt] -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp.ref.loc18: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref.loc18: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_9223372036854775807: Core.IntLiteral = int_value 9223372036854775807 [concrete = constants.%int_9223372036854775807.e6f] -// CHECK:STDOUT: %impl.elem0.loc18: %.f34 = impl_witness_access constants.%ImplicitAs.impl_witness.091, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a1b] -// CHECK:STDOUT: %bound_method.loc18_31.1: = bound_method %int_9223372036854775807, %impl.elem0.loc18 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.fc8] -// CHECK:STDOUT: %specific_fn.loc18: = specific_function %impl.elem0.loc18, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_64) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn.f33] -// CHECK:STDOUT: %bound_method.loc18_31.2: = bound_method %int_9223372036854775807, %specific_fn.loc18 [concrete = constants.%bound_method.e30] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18: init %i64 = call %bound_method.loc18_31.2(%int_9223372036854775807) [concrete = constants.%int_9223372036854775807.045] -// CHECK:STDOUT: %.loc18_31.1: %i64 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18 [concrete = constants.%int_9223372036854775807.045] -// CHECK:STDOUT: %.loc18_31.2: %i64 = converted %int_9223372036854775807, %.loc18_31.1 [concrete = constants.%int_9223372036854775807.045] -// CHECK:STDOUT: %foo.call.loc18: init %i64 = call imports.%foo.decl.6431a3.2(%.loc18_31.2) -// CHECK:STDOUT: %.loc18_50.1: %i64 = value_of_initializer %foo.call.loc18 -// CHECK:STDOUT: %.loc18_50.2: %i64 = converted %foo.call.loc18, %.loc18_50.1 -// CHECK:STDOUT: %i64.loc18: type = type_literal constants.%i64 [concrete = constants.%i64] -// CHECK:STDOUT: %c: %i64 = wrapper_binding c, %.loc18_50.2 -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %c.patt: %pattern_type.f57 = value_binding_pattern c [concrete = constants.%c.patt] -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp.ref.loc22: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref.loc22: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_9223372036854775808: Core.IntLiteral = int_value 9223372036854775808 [concrete = constants.%int_9223372036854775808.293] -// CHECK:STDOUT: %impl.elem0.loc22_32.1: %.2ea = impl_witness_access constants.%ImplicitAs.impl_witness.2c8, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.c6b] -// CHECK:STDOUT: %bound_method.loc22_32.1: = bound_method %int_9223372036854775808, %impl.elem0.loc22_32.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.64f] -// CHECK:STDOUT: %specific_fn.loc22_32.1: = specific_function %impl.elem0.loc22_32.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_128) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn.be8] -// CHECK:STDOUT: %bound_method.loc22_32.2: = bound_method %int_9223372036854775808, %specific_fn.loc22_32.1 [concrete = constants.%bound_method.5d3] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22: init %i128 = call %bound_method.loc22_32.2(%int_9223372036854775808) [concrete = constants.%int_9223372036854775808.c39] -// CHECK:STDOUT: %.loc22_32.1: %i128 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22 [concrete = constants.%int_9223372036854775808.c39] -// CHECK:STDOUT: %.loc22_32.2: %i128 = converted %int_9223372036854775808, %.loc22_32.1 [concrete = constants.%int_9223372036854775808.c39] -// CHECK:STDOUT: %impl.elem0.loc22_32.2: %.858 = impl_witness_access constants.%Copy.impl_witness.952, element0 [concrete = constants.%Int.as.Copy.impl.Op.4fd] -// CHECK:STDOUT: %bound_method.loc22_32.3: = bound_method %.loc22_32.2, %impl.elem0.loc22_32.2 [concrete = constants.%Int.as.Copy.impl.Op.bound.6d1] -// CHECK:STDOUT: %specific_fn.loc22_32.2: = specific_function %impl.elem0.loc22_32.2, @Int.as.Copy.impl.Op(constants.%int_128) [concrete = constants.%Int.as.Copy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc22_32.4: = bound_method %.loc22_32.2, %specific_fn.loc22_32.2 [concrete = constants.%bound_method.ddb] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.call.loc22: init %i128 = call %bound_method.loc22_32.4(%.loc22_32.2) [concrete = constants.%int_9223372036854775808.c39] -// CHECK:STDOUT: %.loc22_32.3: ref %i128 = temporary_storage -// CHECK:STDOUT: %.loc22_32.4: ref %i128 = temporary %.loc22_32.3, %Int.as.Copy.impl.Op.call.loc22 [concrete = constants.%.e05] -// CHECK:STDOUT: %addr.loc22_51.1: %ptr.19c = addr_of %.loc22_32.4 [concrete = constants.%addr.ac7] -// CHECK:STDOUT: %.loc22_51.1: ref %i128 = temporary_storage -// CHECK:STDOUT: %addr.loc22_51.2: %ptr.19c = addr_of %.loc22_51.1 -// CHECK:STDOUT: %foo__carbon_thunk.call.loc22: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc22_51.1, %addr.loc22_51.2) -// CHECK:STDOUT: %.loc22_51.2: init %i128 to %.loc22_51.1 = mark_in_place_init %foo__carbon_thunk.call.loc22 -// CHECK:STDOUT: %.loc22_51.3: ref %i128 = temporary %.loc22_51.1, %.loc22_51.2 -// CHECK:STDOUT: %.loc22_51.4: %i128 = acquire_value %.loc22_51.3 -// CHECK:STDOUT: %i128.loc22: type = type_literal constants.%i128 [concrete = constants.%i128] -// CHECK:STDOUT: %d: %i128 = wrapper_binding d, %.loc22_51.4 -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %d.patt: %pattern_type.97f = value_binding_pattern d [concrete = constants.%d.patt] -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp.ref.loc25: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref.loc25: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_18446744073709551615: Core.IntLiteral = int_value 18446744073709551615 [concrete = constants.%int_18446744073709551615.5ec] -// CHECK:STDOUT: %impl.elem0.loc25_32.1: %.2ea = impl_witness_access constants.%ImplicitAs.impl_witness.2c8, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.c6b] -// CHECK:STDOUT: %bound_method.loc25_32.1: = bound_method %int_18446744073709551615, %impl.elem0.loc25_32.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.8ee] -// CHECK:STDOUT: %specific_fn.loc25_32.1: = specific_function %impl.elem0.loc25_32.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_128) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn.be8] -// CHECK:STDOUT: %bound_method.loc25_32.2: = bound_method %int_18446744073709551615, %specific_fn.loc25_32.1 [concrete = constants.%bound_method.5ac] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25: init %i128 = call %bound_method.loc25_32.2(%int_18446744073709551615) [concrete = constants.%int_18446744073709551615.278] -// CHECK:STDOUT: %.loc25_32.1: %i128 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25 [concrete = constants.%int_18446744073709551615.278] -// CHECK:STDOUT: %.loc25_32.2: %i128 = converted %int_18446744073709551615, %.loc25_32.1 [concrete = constants.%int_18446744073709551615.278] -// CHECK:STDOUT: %impl.elem0.loc25_32.2: %.858 = impl_witness_access constants.%Copy.impl_witness.952, element0 [concrete = constants.%Int.as.Copy.impl.Op.4fd] -// CHECK:STDOUT: %bound_method.loc25_32.3: = bound_method %.loc25_32.2, %impl.elem0.loc25_32.2 [concrete = constants.%Int.as.Copy.impl.Op.bound.4e4] -// CHECK:STDOUT: %specific_fn.loc25_32.2: = specific_function %impl.elem0.loc25_32.2, @Int.as.Copy.impl.Op(constants.%int_128) [concrete = constants.%Int.as.Copy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc25_32.4: = bound_method %.loc25_32.2, %specific_fn.loc25_32.2 [concrete = constants.%bound_method.181] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.call.loc25: init %i128 = call %bound_method.loc25_32.4(%.loc25_32.2) [concrete = constants.%int_18446744073709551615.278] -// CHECK:STDOUT: %.loc25_32.3: ref %i128 = temporary_storage -// CHECK:STDOUT: %.loc25_32.4: ref %i128 = temporary %.loc25_32.3, %Int.as.Copy.impl.Op.call.loc25 [concrete = constants.%.6dc] -// CHECK:STDOUT: %addr.loc25_52.1: %ptr.19c = addr_of %.loc25_32.4 [concrete = constants.%addr.fb9] -// CHECK:STDOUT: %.loc25_52.1: ref %i128 = temporary_storage -// CHECK:STDOUT: %addr.loc25_52.2: %ptr.19c = addr_of %.loc25_52.1 -// CHECK:STDOUT: %foo__carbon_thunk.call.loc25: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc25_52.1, %addr.loc25_52.2) -// CHECK:STDOUT: %.loc25_52.2: init %i128 to %.loc25_52.1 = mark_in_place_init %foo__carbon_thunk.call.loc25 -// CHECK:STDOUT: %.loc25_52.3: ref %i128 = temporary %.loc25_52.1, %.loc25_52.2 -// CHECK:STDOUT: %.loc25_52.4: %i128 = acquire_value %.loc25_52.3 -// CHECK:STDOUT: %i128.loc25: type = type_literal constants.%i128 [concrete = constants.%i128] -// CHECK:STDOUT: %e: %i128 = wrapper_binding e, %.loc25_52.4 -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %e.patt: %pattern_type.97f = value_binding_pattern e [concrete = constants.%e.patt] -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp.ref.loc28: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref.loc28: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_18446744073709551616: Core.IntLiteral = int_value 18446744073709551616 [concrete = constants.%int_18446744073709551616.1ee] -// CHECK:STDOUT: %impl.elem0.loc28_32.1: %.2ea = impl_witness_access constants.%ImplicitAs.impl_witness.2c8, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.c6b] -// CHECK:STDOUT: %bound_method.loc28_32.1: = bound_method %int_18446744073709551616, %impl.elem0.loc28_32.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.f7c] -// CHECK:STDOUT: %specific_fn.loc28_32.1: = specific_function %impl.elem0.loc28_32.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_128) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn.be8] -// CHECK:STDOUT: %bound_method.loc28_32.2: = bound_method %int_18446744073709551616, %specific_fn.loc28_32.1 [concrete = constants.%bound_method.e5e] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc28: init %i128 = call %bound_method.loc28_32.2(%int_18446744073709551616) [concrete = constants.%int_18446744073709551616.9ff] -// CHECK:STDOUT: %.loc28_32.1: %i128 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc28 [concrete = constants.%int_18446744073709551616.9ff] -// CHECK:STDOUT: %.loc28_32.2: %i128 = converted %int_18446744073709551616, %.loc28_32.1 [concrete = constants.%int_18446744073709551616.9ff] -// CHECK:STDOUT: %impl.elem0.loc28_32.2: %.858 = impl_witness_access constants.%Copy.impl_witness.952, element0 [concrete = constants.%Int.as.Copy.impl.Op.4fd] -// CHECK:STDOUT: %bound_method.loc28_32.3: = bound_method %.loc28_32.2, %impl.elem0.loc28_32.2 [concrete = constants.%Int.as.Copy.impl.Op.bound.776] -// CHECK:STDOUT: %specific_fn.loc28_32.2: = specific_function %impl.elem0.loc28_32.2, @Int.as.Copy.impl.Op(constants.%int_128) [concrete = constants.%Int.as.Copy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc28_32.4: = bound_method %.loc28_32.2, %specific_fn.loc28_32.2 [concrete = constants.%bound_method.b9e] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.call.loc28: init %i128 = call %bound_method.loc28_32.4(%.loc28_32.2) [concrete = constants.%int_18446744073709551616.9ff] -// CHECK:STDOUT: %.loc28_32.3: ref %i128 = temporary_storage -// CHECK:STDOUT: %.loc28_32.4: ref %i128 = temporary %.loc28_32.3, %Int.as.Copy.impl.Op.call.loc28 [concrete = constants.%.579] -// CHECK:STDOUT: %addr.loc28_52.1: %ptr.19c = addr_of %.loc28_32.4 [concrete = constants.%addr.cbf] -// CHECK:STDOUT: %.loc28_52.1: ref %i128 = temporary_storage -// CHECK:STDOUT: %addr.loc28_52.2: %ptr.19c = addr_of %.loc28_52.1 -// CHECK:STDOUT: %foo__carbon_thunk.call.loc28: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc28_52.1, %addr.loc28_52.2) -// CHECK:STDOUT: %.loc28_52.2: init %i128 to %.loc28_52.1 = mark_in_place_init %foo__carbon_thunk.call.loc28 -// CHECK:STDOUT: %.loc28_52.3: ref %i128 = temporary %.loc28_52.1, %.loc28_52.2 -// CHECK:STDOUT: %.loc28_52.4: %i128 = acquire_value %.loc28_52.3 -// CHECK:STDOUT: %i128.loc28: type = type_literal constants.%i128 [concrete = constants.%i128] -// CHECK:STDOUT: %f: %i128 = wrapper_binding f, %.loc28_52.4 -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %f.patt: %pattern_type.97f = value_binding_pattern f [concrete = constants.%f.patt] -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp.ref.loc31: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref.loc31: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_170141183460469231731687303715884105727: Core.IntLiteral = int_value 170141183460469231731687303715884105727 [concrete = constants.%int_170141183460469231731687303715884105727.fea] -// CHECK:STDOUT: %impl.elem0.loc31_32.1: %.2ea = impl_witness_access constants.%ImplicitAs.impl_witness.2c8, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.c6b] -// CHECK:STDOUT: %bound_method.loc31_32.1: = bound_method %int_170141183460469231731687303715884105727, %impl.elem0.loc31_32.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.6a6] -// CHECK:STDOUT: %specific_fn.loc31_32.1: = specific_function %impl.elem0.loc31_32.1, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_128) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn.be8] -// CHECK:STDOUT: %bound_method.loc31_32.2: = bound_method %int_170141183460469231731687303715884105727, %specific_fn.loc31_32.1 [concrete = constants.%bound_method.537] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc31: init %i128 = call %bound_method.loc31_32.2(%int_170141183460469231731687303715884105727) [concrete = constants.%int_170141183460469231731687303715884105727.a76] -// CHECK:STDOUT: %.loc31_32.1: %i128 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc31 [concrete = constants.%int_170141183460469231731687303715884105727.a76] -// CHECK:STDOUT: %.loc31_32.2: %i128 = converted %int_170141183460469231731687303715884105727, %.loc31_32.1 [concrete = constants.%int_170141183460469231731687303715884105727.a76] -// CHECK:STDOUT: %impl.elem0.loc31_32.2: %.858 = impl_witness_access constants.%Copy.impl_witness.952, element0 [concrete = constants.%Int.as.Copy.impl.Op.4fd] -// CHECK:STDOUT: %bound_method.loc31_32.3: = bound_method %.loc31_32.2, %impl.elem0.loc31_32.2 [concrete = constants.%Int.as.Copy.impl.Op.bound.61b] -// CHECK:STDOUT: %specific_fn.loc31_32.2: = specific_function %impl.elem0.loc31_32.2, @Int.as.Copy.impl.Op(constants.%int_128) [concrete = constants.%Int.as.Copy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc31_32.4: = bound_method %.loc31_32.2, %specific_fn.loc31_32.2 [concrete = constants.%bound_method.5a5] -// CHECK:STDOUT: %Int.as.Copy.impl.Op.call.loc31: init %i128 = call %bound_method.loc31_32.4(%.loc31_32.2) [concrete = constants.%int_170141183460469231731687303715884105727.a76] -// CHECK:STDOUT: %.loc31_32.3: ref %i128 = temporary_storage -// CHECK:STDOUT: %.loc31_32.4: ref %i128 = temporary %.loc31_32.3, %Int.as.Copy.impl.Op.call.loc31 [concrete = constants.%.dc9] -// CHECK:STDOUT: %addr.loc31_71.1: %ptr.19c = addr_of %.loc31_32.4 [concrete = constants.%addr.882] -// CHECK:STDOUT: %.loc31_71.1: ref %i128 = temporary_storage -// CHECK:STDOUT: %addr.loc31_71.2: %ptr.19c = addr_of %.loc31_71.1 -// CHECK:STDOUT: %foo__carbon_thunk.call.loc31: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc31_71.1, %addr.loc31_71.2) -// CHECK:STDOUT: %.loc31_71.2: init %i128 to %.loc31_71.1 = mark_in_place_init %foo__carbon_thunk.call.loc31 -// CHECK:STDOUT: %.loc31_71.3: ref %i128 = temporary %.loc31_71.1, %.loc31_71.2 -// CHECK:STDOUT: %.loc31_71.4: %i128 = acquire_value %.loc31_71.3 -// CHECK:STDOUT: %i128.loc31: type = type_literal constants.%i128 [concrete = constants.%i128] -// CHECK:STDOUT: %g: %i128 = wrapper_binding g, %.loc31_71.4 -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %g.patt: %pattern_type.97f = value_binding_pattern g [concrete = constants.%g.patt] -// CHECK:STDOUT: } -// CHECK:STDOUT: %Destroy.Op.bound.loc31: = bound_method %.loc31_71.3, constants.%Destroy.Op.1a2547.2 -// CHECK:STDOUT: %Destroy.Op.call.loc31_71: init %empty_tuple.type = call %Destroy.Op.bound.loc31(%.loc31_71.3) -// CHECK:STDOUT: %Destroy.Op.call.loc31_32: init %empty_tuple.type = call constants.%Destroy.Op.bound.741(constants.%.dc9) -// CHECK:STDOUT: %Destroy.Op.bound.loc28: = bound_method %.loc28_52.3, constants.%Destroy.Op.1a2547.2 -// CHECK:STDOUT: %Destroy.Op.call.loc28_52: init %empty_tuple.type = call %Destroy.Op.bound.loc28(%.loc28_52.3) -// CHECK:STDOUT: %Destroy.Op.call.loc28_32: init %empty_tuple.type = call constants.%Destroy.Op.bound.bb1(constants.%.579) -// CHECK:STDOUT: %Destroy.Op.bound.loc25: = bound_method %.loc25_52.3, constants.%Destroy.Op.1a2547.2 -// CHECK:STDOUT: %Destroy.Op.call.loc25_52: init %empty_tuple.type = call %Destroy.Op.bound.loc25(%.loc25_52.3) -// CHECK:STDOUT: %Destroy.Op.call.loc25_32: init %empty_tuple.type = call constants.%Destroy.Op.bound.958(constants.%.6dc) -// CHECK:STDOUT: %Destroy.Op.bound.loc22: = bound_method %.loc22_51.3, constants.%Destroy.Op.1a2547.2 -// CHECK:STDOUT: %Destroy.Op.call.loc22_51: init %empty_tuple.type = call %Destroy.Op.bound.loc22(%.loc22_51.3) -// CHECK:STDOUT: %Destroy.Op.call.loc22_32: init %empty_tuple.type = call constants.%Destroy.Op.bound.eaa(constants.%.e05) -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @foo.1(%a.param: %i32) -> out %return.param: %i32; -// CHECK:STDOUT: -// CHECK:STDOUT: fn @foo.2(%a.param: %i64) -> out %return.param: %i64; -// CHECK:STDOUT: -// CHECK:STDOUT: fn @foo.3(%a.param: %i128) -> out %return.param: %i128; -// CHECK:STDOUT: -// CHECK:STDOUT: fn @foo__carbon_thunk(%a.param: %ptr.19c, %return.param: %ptr.19c); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc31_71.1(%self.param: ref %i128.builtin) = "no_op"; -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc31_71.2(%self.param: ref %i128) { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_import_large_int_literal.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %int_128: Core.IntLiteral = int_value 128 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i128: type = class_type @Int, @Int(%int_128) [concrete] -// CHECK:STDOUT: %pattern_type.97f: type = pattern_type %i128 [concrete] -// CHECK:STDOUT: %h.patt: %pattern_type.97f = value_binding_pattern h [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %int_170141183460469231731687303715884105728: Core.IntLiteral = int_value 170141183460469231731687303715884105728 [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .foo = %foo.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "int_literal.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_170141183460469231731687303715884105728: Core.IntLiteral = int_value 170141183460469231731687303715884105728 [concrete = constants.%int_170141183460469231731687303715884105728] -// CHECK:STDOUT: %i128: type = type_literal constants.%i128 [concrete = constants.%i128] -// CHECK:STDOUT: %h: %i128 = wrapper_binding h, [concrete = ] -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %h.patt: %pattern_type.97f = value_binding_pattern h [concrete = constants.%h.patt] -// CHECK:STDOUT: } -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: --- import_negative_int_literal.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] -// CHECK:STDOUT: %Negate.impl_witness: = impl_witness imports.%Negate.impl_witness_table [concrete] -// CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value Core.IntLiteral, (%Negate.impl_witness) [concrete] -// CHECK:STDOUT: %Negate.WithSelf.Op.type.db1: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] -// CHECK:STDOUT: %.e9b: type = fn_type_with_self_type %Negate.WithSelf.Op.type.db1, %Negate.facet [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.type: type = fn_type @Core.IntLiteral.as.Negate.impl.Op [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op: %Core.IntLiteral.as.Negate.impl.Op.type = struct_value () [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.bound: = bound_method %int_1, %Core.IntLiteral.as.Negate.impl.Op [concrete] -// CHECK:STDOUT: %int_-1.638: Core.IntLiteral = int_value -1 [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete] -// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete] -// CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] -// CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.914: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.845: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.a23: = impl_witness imports.%ImplicitAs.impl_witness_table.b3c, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.2ba: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.2ba = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.914 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.a23) [concrete] -// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.740: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i32, %ImplicitAs.facet) [concrete] -// CHECK:STDOUT: %.1c5: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.740, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_-1.638, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39 [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_-1.638, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] -// CHECK:STDOUT: %int_-1.4ef: %i32 = int_value -1 [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Negate = %Core.Negate -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .foo = %foo.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %Core.Negate: type = import_ref Core//prelude/parts/int_literal, Negate, loaded [concrete = constants.%Negate.type] -// CHECK:STDOUT: %Core.import_ref.abd = import_ref Core//prelude/parts/int_literal, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.9c3: %Core.IntLiteral.as.Negate.impl.Op.type = import_ref Core//prelude/parts/int_literal, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] -// CHECK:STDOUT: %Negate.impl_witness_table = impl_witness_table (%Core.import_ref.abd, %Core.import_ref.9c3), @Core.IntLiteral.as.Negate.impl [concrete] -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] { -// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt] -// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.1: type = splice_block %i32.2 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.1: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %i32.2: type = type_literal %i32.1 [concrete = constants.%i32] -// CHECK:STDOUT: } -// CHECK:STDOUT: %a: %i32 = wrapper_binding a, %a.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.edf: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.845)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.b3c = impl_witness_table (%Core.import_ref.edf), @Core.IntLiteral.as.ImplicitAs.impl [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "negative_int_literal.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %impl.elem1: %.e9b = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] -// CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_1, %impl.elem1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op.bound] -// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.call: init Core.IntLiteral = call %bound_method.loc8_11.1(%int_1) [concrete = constants.%int_-1.638] -// CHECK:STDOUT: %impl.elem0: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] -// CHECK:STDOUT: %bound_method.loc8_11.2: = bound_method %Core.IntLiteral.as.Negate.impl.Op.call, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc8_11.3: = bound_method %Core.IntLiteral.as.Negate.impl.Op.call, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %.loc8_11.1: Core.IntLiteral = value_of_initializer %Core.IntLiteral.as.Negate.impl.Op.call [concrete = constants.%int_-1.638] -// CHECK:STDOUT: %.loc8_11.2: Core.IntLiteral = converted %Core.IntLiteral.as.Negate.impl.Op.call, %.loc8_11.1 [concrete = constants.%int_-1.638] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc8_11.3(%.loc8_11.2) [concrete = constants.%int_-1.4ef] -// CHECK:STDOUT: %.loc8_11.3: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_-1.4ef] -// CHECK:STDOUT: %.loc8_11.4: %i32 = converted %Core.IntLiteral.as.Negate.impl.Op.call, %.loc8_11.3 [concrete = constants.%int_-1.4ef] -// CHECK:STDOUT: %foo.call: init %empty_tuple.type = call imports.%foo.decl(%.loc8_11.4) -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @foo(%a.param: %i32); -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_import_negative_literal_passed_to_unsigned.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] -// CHECK:STDOUT: %Negate.impl_witness: = impl_witness imports.%Negate.impl_witness_table [concrete] -// CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value Core.IntLiteral, (%Negate.impl_witness) [concrete] -// CHECK:STDOUT: %Negate.WithSelf.Op.type.db1: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] -// CHECK:STDOUT: %.e9b: type = fn_type_with_self_type %Negate.WithSelf.Op.type.db1, %Negate.facet [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.type: type = fn_type @Core.IntLiteral.as.Negate.impl.Op [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op: %Core.IntLiteral.as.Negate.impl.Op.type = struct_value () [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.bound: = bound_method %int_1, %Core.IntLiteral.as.Negate.impl.Op [concrete] -// CHECK:STDOUT: %int_-1.638: Core.IntLiteral = int_value -1 [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %UInt.type: type = generic_class_type @UInt [concrete] -// CHECK:STDOUT: %UInt.generic: %UInt.type = struct_value () [concrete] -// CHECK:STDOUT: %u32: type = class_type @UInt, @UInt(%int_32) [concrete] -// CHECK:STDOUT: %pattern_type.668: type = pattern_type %u32 [concrete] -// CHECK:STDOUT: %a.param_patt: %pattern_type.668 = value_param_pattern [concrete] -// CHECK:STDOUT: %a.patt: %pattern_type.668 = at_binding_pattern a, %a.param_patt [concrete] -// CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] -// CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.efe: type = facet_type <@ImplicitAs, @ImplicitAs(%u32)> [concrete] -// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.199: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.170: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.199 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.0a1: = impl_witness imports.%ImplicitAs.impl_witness_table.42f, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.957: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.9db: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.957 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.efe = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.0a1) [concrete] -// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.b71: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%u32, %ImplicitAs.facet) [concrete] -// CHECK:STDOUT: %.22b: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.b71, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_-1.638, %Core.IntLiteral.as.ImplicitAs.impl.Convert.9db [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.9db, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_-1.638, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] -// CHECK:STDOUT: %int_-1.002: %u32 = int_value 18446744073709551615 [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Negate = %Core.Negate -// CHECK:STDOUT: .UInt = %Core.UInt -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .foo = %foo.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %Core.Negate: type = import_ref Core//prelude/parts/int_literal, Negate, loaded [concrete = constants.%Negate.type] -// CHECK:STDOUT: %Core.import_ref.abd = import_ref Core//prelude/parts/int_literal, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.9c3: %Core.IntLiteral.as.Negate.impl.Op.type = import_ref Core//prelude/parts/int_literal, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] -// CHECK:STDOUT: %Negate.impl_witness_table = impl_witness_table (%Core.import_ref.abd, %Core.import_ref.9c3), @Core.IntLiteral.as.Negate.impl [concrete] -// CHECK:STDOUT: %Core.UInt: %UInt.type = import_ref Core//prelude/parts/uint, UInt, loaded [concrete = constants.%UInt.generic] -// CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] { -// CHECK:STDOUT: %a.param_patt: %pattern_type.668 = value_param_pattern [concrete = constants.%a.param_patt] -// CHECK:STDOUT: %a.patt: %pattern_type.668 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %u32 = value_param call_param0 -// CHECK:STDOUT: %.1: type = splice_block %u32.2 [concrete = constants.%u32] { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %u32.1: type = class_type @UInt, @UInt(constants.%int_32) [concrete = constants.%u32] -// CHECK:STDOUT: %u32.2: type = type_literal %u32.1 [concrete = constants.%u32] -// CHECK:STDOUT: } -// CHECK:STDOUT: %a: %u32 = wrapper_binding a, %a.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.aa5: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.199) = import_ref Core//prelude/parts/uint, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.170)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.42f = impl_witness_table (%Core.import_ref.aa5), @Core.IntLiteral.as.ImplicitAs.impl [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "negative_literal_passed_to_unsigned.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %impl.elem1: %.e9b = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] -// CHECK:STDOUT: %bound_method.loc15_11.1: = bound_method %int_1, %impl.elem1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op.bound] -// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.call: init Core.IntLiteral = call %bound_method.loc15_11.1(%int_1) [concrete = constants.%int_-1.638] -// CHECK:STDOUT: %impl.elem0: %.22b = impl_witness_access constants.%ImplicitAs.impl_witness.0a1, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.9db] -// CHECK:STDOUT: %bound_method.loc15_11.2: = bound_method %Core.IntLiteral.as.Negate.impl.Op.call, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc15_11.3: = bound_method %Core.IntLiteral.as.Negate.impl.Op.call, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %.loc15_11.1: Core.IntLiteral = value_of_initializer %Core.IntLiteral.as.Negate.impl.Op.call [concrete = constants.%int_-1.638] -// CHECK:STDOUT: %.loc15_11.2: Core.IntLiteral = converted %Core.IntLiteral.as.Negate.impl.Op.call, %.loc15_11.1 [concrete = constants.%int_-1.638] -// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %u32 = call %bound_method.loc15_11.3(%.loc15_11.2) [concrete = constants.%int_-1.002] -// CHECK:STDOUT: %.loc15_11.3: %u32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_-1.002] -// CHECK:STDOUT: %.loc15_11.4: %u32 = converted %Core.IntLiteral.as.Negate.impl.Op.call, %.loc15_11.3 [concrete = constants.%int_-1.002] -// CHECK:STDOUT: %foo.call: init %empty_tuple.type = call imports.%foo.decl(%.loc15_11.4) -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @foo(%a.param: %u32); -// CHECK:STDOUT: -// CHECK:STDOUT: --- import_floating_point_literal.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] -// CHECK:STDOUT: %Float.type: type = generic_class_type @Float [concrete] -// CHECK:STDOUT: %Float.generic: %Float.type = struct_value () [concrete] -// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] -// CHECK:STDOUT: %f64.dc1: type = class_type @Float, @Float(%int_64) [concrete] -// CHECK:STDOUT: %f64.794: type = float_type %int_64, f64 [concrete] -// CHECK:STDOUT: %pattern_type.fb7: type = pattern_type %f64.dc1 [concrete] -// CHECK:STDOUT: %d.patt: %pattern_type.fb7 = value_binding_pattern d [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %float.6da: Core.FloatLiteral = float_literal_value 10e-1 [concrete] -// CHECK:STDOUT: %ptr.749: type = ptr_type %f64.dc1 [concrete] -// CHECK:STDOUT: %pattern_type.a3b: type = pattern_type %ptr.749 [concrete] -// CHECK:STDOUT: %a.param_patt.1c1: %pattern_type.a3b = value_param_pattern [concrete] -// CHECK:STDOUT: %a.patt.421: %pattern_type.a3b = at_binding_pattern a, %a.param_patt.1c1 [concrete] -// CHECK:STDOUT: %return.param_patt.0c1: %pattern_type.a3b = value_param_pattern [concrete] -// CHECK:STDOUT: %return.patt.998: %pattern_type.a3b = at_binding_pattern r#return, %return.param_patt.0c1 [concrete] -// CHECK:STDOUT: %foo__carbon_thunk.type: type = fn_type @foo__carbon_thunk [concrete] -// CHECK:STDOUT: %foo__carbon_thunk: %foo__carbon_thunk.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.91e: type = facet_type <@ImplicitAs, @ImplicitAs(%f64.dc1)> [concrete] -// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] -// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.063: type = fn_type @Core.FloatLiteral.as.ImplicitAs.impl.Convert, @Core.FloatLiteral.as.ImplicitAs.impl(%To) [symbolic] -// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.d4f: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.063 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.43c: = impl_witness imports.%ImplicitAs.impl_witness_table, @Core.FloatLiteral.as.ImplicitAs.impl(%int_64) [concrete] -// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.ef0: type = fn_type @Core.FloatLiteral.as.ImplicitAs.impl.Convert, @Core.FloatLiteral.as.ImplicitAs.impl(%int_64) [concrete] -// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.cf0: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.ef0 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.91e = facet_value Core.FloatLiteral, (%ImplicitAs.impl_witness.43c) [concrete] -// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.6c5: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%f64.dc1, %ImplicitAs.facet) [concrete] -// CHECK:STDOUT: %.2d7: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.6c5, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %float.6da, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.cf0 [concrete] -// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.FloatLiteral.as.ImplicitAs.impl.Convert.cf0, @Core.FloatLiteral.as.ImplicitAs.impl.Convert(%int_64) [concrete] -// CHECK:STDOUT: %bound_method.143: = bound_method %float.6da, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] -// CHECK:STDOUT: %float.3b9: %f64.dc1 = float_value 1 [concrete] -// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] -// CHECK:STDOUT: %Float.as.Copy.impl.Op.type.ff3: type = fn_type @Float.as.Copy.impl.Op, @Float.as.Copy.impl(%N) [symbolic] -// CHECK:STDOUT: %Float.as.Copy.impl.Op.d93: %Float.as.Copy.impl.Op.type.ff3 = struct_value () [symbolic] -// CHECK:STDOUT: %Copy.impl_witness.873: = impl_witness imports.%Copy.impl_witness_table.4e8, @Float.as.Copy.impl(%int_64) [concrete] -// CHECK:STDOUT: %Float.as.Copy.impl.Op.type.7aa: type = fn_type @Float.as.Copy.impl.Op, @Float.as.Copy.impl(%int_64) [concrete] -// CHECK:STDOUT: %Float.as.Copy.impl.Op.9c2: %Float.as.Copy.impl.Op.type.7aa = struct_value () [concrete] -// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %f64.dc1, (%Copy.impl_witness.873) [concrete] -// CHECK:STDOUT: %Copy.WithSelf.Op.type.2ca: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet) [concrete] -// CHECK:STDOUT: %.557: type = fn_type_with_self_type %Copy.WithSelf.Op.type.2ca, %Copy.facet [concrete] -// CHECK:STDOUT: %Float.as.Copy.impl.Op.bound: = bound_method %float.3b9, %Float.as.Copy.impl.Op.9c2 [concrete] -// CHECK:STDOUT: %Float.as.Copy.impl.Op.specific_fn: = specific_function %Float.as.Copy.impl.Op.9c2, @Float.as.Copy.impl.Op(%int_64) [concrete] -// CHECK:STDOUT: %bound_method.7f2: = bound_method %float.3b9, %Float.as.Copy.impl.Op.specific_fn [concrete] -// CHECK:STDOUT: %.011: ref %f64.dc1 = temporary invalid, %float.3b9 [concrete] -// CHECK:STDOUT: %addr: %ptr.749 = addr_of %.011 [concrete] -// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Destroy.Op.type.1d8f74.2: type = fn_type @Destroy.Op.loc7_34.2 [concrete] -// CHECK:STDOUT: %Destroy.Op.1a2547.2: %Destroy.Op.type.1d8f74.2 = struct_value () [concrete] -// CHECK:STDOUT: %Destroy.Op.bound: = bound_method %.011, %Destroy.Op.1a2547.2 [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Float = %Core.Float -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: .Copy = %Core.Copy -// CHECK:STDOUT: .Destroy = %Core.Destroy -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .foo = %foo.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Float: %Float.type = import_ref Core//prelude/parts/float, Float, loaded [concrete = constants.%Float.generic] -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %foo__carbon_thunk.decl: %foo__carbon_thunk.type = fn_decl @foo__carbon_thunk [concrete = constants.%foo__carbon_thunk] { -// CHECK:STDOUT: %a.param_patt: %pattern_type.a3b = value_param_pattern [concrete = constants.%a.param_patt.1c1] -// CHECK:STDOUT: %a.patt: %pattern_type.a3b = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.421] -// CHECK:STDOUT: %return.param_patt: %pattern_type.a3b = value_param_pattern [concrete = constants.%return.param_patt.0c1] -// CHECK:STDOUT: %return.patt: %pattern_type.a3b = at_binding_pattern r#return, %return.param_patt [concrete = constants.%return.patt.998] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %ptr.749 = value_param call_param0 -// CHECK:STDOUT: %.1: type = splice_block constants.%ptr.749 [concrete = constants.%ptr.749] { -// CHECK:STDOUT: %int_64.2: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] -// CHECK:STDOUT: %f64.3: type = class_type @Float, @Float(constants.%int_64) [concrete = constants.%f64.dc1] -// CHECK:STDOUT: %f64.4: type = type_literal %f64.3 [concrete = constants.%f64.dc1] -// CHECK:STDOUT: } -// CHECK:STDOUT: %a: %ptr.749 = wrapper_binding a, %a.param -// CHECK:STDOUT: %return.param: %ptr.749 = value_param call_param1 -// CHECK:STDOUT: %.2: type = splice_block constants.%ptr.749 [concrete = constants.%ptr.749] { -// CHECK:STDOUT: %int_64.1: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] -// CHECK:STDOUT: %f64.1: type = class_type @Float, @Float(constants.%int_64) [concrete = constants.%f64.dc1] -// CHECK:STDOUT: %f64.2: type = type_literal %f64.1 [concrete = constants.%f64.dc1] -// CHECK:STDOUT: } -// CHECK:STDOUT: %return: %ptr.749 = wrapper_binding r#return, %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.c4c: @Core.FloatLiteral.as.ImplicitAs.impl.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.type (%Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.063) = import_ref Core//prelude/parts/float, loc{{\d+_\d+}}, loaded [symbolic = @Core.FloatLiteral.as.ImplicitAs.impl.%Core.FloatLiteral.as.ImplicitAs.impl.Convert (constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.d4f)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table = impl_witness_table (%Core.import_ref.c4c), @Core.FloatLiteral.as.ImplicitAs.impl [concrete] -// CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type] -// CHECK:STDOUT: %Core.import_ref.e69: @Float.as.Copy.impl.%Float.as.Copy.impl.Op.type (%Float.as.Copy.impl.Op.type.ff3) = import_ref Core//prelude/parts/float, loc{{\d+_\d+}}, loaded [symbolic = @Float.as.Copy.impl.%Float.as.Copy.impl.Op (constants.%Float.as.Copy.impl.Op.d93)] -// CHECK:STDOUT: %Copy.impl_witness_table.4e8 = impl_witness_table (%Core.import_ref.e69), @Float.as.Copy.impl [concrete] -// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "floating_point_literal.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %float: Core.FloatLiteral = float_literal_value 10e-1 [concrete = constants.%float.6da] -// CHECK:STDOUT: %impl.elem0.loc7_31.1: %.2d7 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.cf0] -// CHECK:STDOUT: %bound_method.loc7_31.1: = bound_method %float, %impl.elem0.loc7_31.1 [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.bound] -// CHECK:STDOUT: %specific_fn.loc7_31.1: = specific_function %impl.elem0.loc7_31.1, @Core.FloatLiteral.as.ImplicitAs.impl.Convert(constants.%int_64) [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc7_31.2: = bound_method %float, %specific_fn.loc7_31.1 [concrete = constants.%bound_method.143] -// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.call: init %f64.dc1 = call %bound_method.loc7_31.2(%float) [concrete = constants.%float.3b9] -// CHECK:STDOUT: %.loc7_31.1: %f64.dc1 = value_of_initializer %Core.FloatLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%float.3b9] -// CHECK:STDOUT: %.loc7_31.2: %f64.dc1 = converted %float, %.loc7_31.1 [concrete = constants.%float.3b9] -// CHECK:STDOUT: %impl.elem0.loc7_31.2: %.557 = impl_witness_access constants.%Copy.impl_witness.873, element0 [concrete = constants.%Float.as.Copy.impl.Op.9c2] -// CHECK:STDOUT: %bound_method.loc7_31.3: = bound_method %.loc7_31.2, %impl.elem0.loc7_31.2 [concrete = constants.%Float.as.Copy.impl.Op.bound] -// CHECK:STDOUT: %specific_fn.loc7_31.2: = specific_function %impl.elem0.loc7_31.2, @Float.as.Copy.impl.Op(constants.%int_64) [concrete = constants.%Float.as.Copy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc7_31.4: = bound_method %.loc7_31.2, %specific_fn.loc7_31.2 [concrete = constants.%bound_method.7f2] -// CHECK:STDOUT: %Float.as.Copy.impl.Op.call: init %f64.dc1 = call %bound_method.loc7_31.4(%.loc7_31.2) [concrete = constants.%float.3b9] -// CHECK:STDOUT: %.loc7_31.3: ref %f64.dc1 = temporary_storage -// CHECK:STDOUT: %.loc7_31.4: ref %f64.dc1 = temporary %.loc7_31.3, %Float.as.Copy.impl.Op.call [concrete = constants.%.011] -// CHECK:STDOUT: %addr.loc7_34.1: %ptr.749 = addr_of %.loc7_31.4 [concrete = constants.%addr] -// CHECK:STDOUT: %.loc7_34.1: ref %f64.dc1 = temporary_storage -// CHECK:STDOUT: %addr.loc7_34.2: %ptr.749 = addr_of %.loc7_34.1 -// CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc7_34.1, %addr.loc7_34.2) -// CHECK:STDOUT: %.loc7_34.2: init %f64.dc1 to %.loc7_34.1 = mark_in_place_init %foo__carbon_thunk.call -// CHECK:STDOUT: %.loc7_34.3: ref %f64.dc1 = temporary %.loc7_34.1, %.loc7_34.2 -// CHECK:STDOUT: %.loc7_34.4: %f64.dc1 = acquire_value %.loc7_34.3 -// CHECK:STDOUT: %f64: type = type_literal constants.%f64.dc1 [concrete = constants.%f64.dc1] -// CHECK:STDOUT: %d: %f64.dc1 = wrapper_binding d, %.loc7_34.4 -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %d.patt: %pattern_type.fb7 = value_binding_pattern d [concrete = constants.%d.patt] -// CHECK:STDOUT: } -// CHECK:STDOUT: %Destroy.Op.bound: = bound_method %.loc7_34.3, constants.%Destroy.Op.1a2547.2 -// CHECK:STDOUT: %Destroy.Op.call.loc7_34: init %empty_tuple.type = call %Destroy.Op.bound(%.loc7_34.3) -// CHECK:STDOUT: %Destroy.Op.call.loc7_31: init %empty_tuple.type = call constants.%Destroy.Op.bound(constants.%.011) -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @foo(%a.param: %f64.dc1) -> out %return.param: %f64.dc1; -// CHECK:STDOUT: -// CHECK:STDOUT: fn @foo__carbon_thunk(%a.param: %ptr.749, %return.param: %ptr.749); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc7_34.1(%self.param: ref %f64.794) = "no_op"; -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc7_34.2(%self.param: ref %f64.dc1) { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_import_large_floating_point_literal.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %float: Core.FloatLiteral = float_literal_value 18e307 [concrete] -// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] -// CHECK:STDOUT: %Float.type: type = generic_class_type @Float [concrete] -// CHECK:STDOUT: %Float.generic: %Float.type = struct_value () [concrete] -// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] -// CHECK:STDOUT: %f64.dc1: type = class_type @Float, @Float(%int_64) [concrete] -// CHECK:STDOUT: %ptr.749: type = ptr_type %f64.dc1 [concrete] -// CHECK:STDOUT: %pattern_type.a3b: type = pattern_type %ptr.749 [concrete] -// CHECK:STDOUT: %a.param_patt.1c1: %pattern_type.a3b = value_param_pattern [concrete] -// CHECK:STDOUT: %a.patt.421: %pattern_type.a3b = at_binding_pattern a, %a.param_patt.1c1 [concrete] -// CHECK:STDOUT: %return.param_patt.0c1: %pattern_type.a3b = value_param_pattern [concrete] -// CHECK:STDOUT: %return.patt.998: %pattern_type.a3b = at_binding_pattern r#return, %return.param_patt.0c1 [concrete] -// CHECK:STDOUT: %foo__carbon_thunk.type: type = fn_type @foo__carbon_thunk [concrete] -// CHECK:STDOUT: %foo__carbon_thunk: %foo__carbon_thunk.type = struct_value () [concrete] -// CHECK:STDOUT: %f64.794: type = float_type %int_64, f64 [concrete] -// CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.91e: type = facet_type <@ImplicitAs, @ImplicitAs(%f64.dc1)> [concrete] -// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] -// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.063: type = fn_type @Core.FloatLiteral.as.ImplicitAs.impl.Convert, @Core.FloatLiteral.as.ImplicitAs.impl(%To) [symbolic] -// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.d4f: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.063 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.43c: = impl_witness imports.%ImplicitAs.impl_witness_table, @Core.FloatLiteral.as.ImplicitAs.impl(%int_64) [concrete] -// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.ef0: type = fn_type @Core.FloatLiteral.as.ImplicitAs.impl.Convert, @Core.FloatLiteral.as.ImplicitAs.impl(%int_64) [concrete] -// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.cf0: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.ef0 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.91e = facet_value Core.FloatLiteral, (%ImplicitAs.impl_witness.43c) [concrete] -// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.6c5: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%f64.dc1, %ImplicitAs.facet) [concrete] -// CHECK:STDOUT: %.2d7: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.6c5, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %float, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.cf0 [concrete] -// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.FloatLiteral.as.ImplicitAs.impl.Convert.cf0, @Core.FloatLiteral.as.ImplicitAs.impl.Convert(%int_64) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %float, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] -// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] -// CHECK:STDOUT: %Float.as.Copy.impl.Op.type.ff3: type = fn_type @Float.as.Copy.impl.Op, @Float.as.Copy.impl(%N) [symbolic] -// CHECK:STDOUT: %Float.as.Copy.impl.Op.d93: %Float.as.Copy.impl.Op.type.ff3 = struct_value () [symbolic] -// CHECK:STDOUT: %Copy.impl_witness.873: = impl_witness imports.%Copy.impl_witness_table.4e8, @Float.as.Copy.impl(%int_64) [concrete] -// CHECK:STDOUT: %Float.as.Copy.impl.Op.type.7aa: type = fn_type @Float.as.Copy.impl.Op, @Float.as.Copy.impl(%int_64) [concrete] -// CHECK:STDOUT: %Float.as.Copy.impl.Op.9c2: %Float.as.Copy.impl.Op.type.7aa = struct_value () [concrete] -// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %f64.dc1, (%Copy.impl_witness.873) [concrete] -// CHECK:STDOUT: %Copy.WithSelf.Op.type.2ca: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet) [concrete] -// CHECK:STDOUT: %.557: type = fn_type_with_self_type %Copy.WithSelf.Op.type.2ca, %Copy.facet [concrete] -// CHECK:STDOUT: %Float.as.Copy.impl.Op.specific_fn: = specific_function %Float.as.Copy.impl.Op.9c2, @Float.as.Copy.impl.Op(%int_64) [concrete] -// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Destroy.Op.type.1d8f74.2: type = fn_type @Destroy.Op.loc15_19.2 [concrete] -// CHECK:STDOUT: %Destroy.Op.1a2547.2: %Destroy.Op.type.1d8f74.2 = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Float = %Core.Float -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: .Copy = %Core.Copy -// CHECK:STDOUT: .Destroy = %Core.Destroy -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .foo = %foo.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %Core.Float: %Float.type = import_ref Core//prelude/parts/float, Float, loaded [concrete = constants.%Float.generic] -// CHECK:STDOUT: %foo__carbon_thunk.decl: %foo__carbon_thunk.type = fn_decl @foo__carbon_thunk [concrete = constants.%foo__carbon_thunk] { -// CHECK:STDOUT: %a.param_patt: %pattern_type.a3b = value_param_pattern [concrete = constants.%a.param_patt.1c1] -// CHECK:STDOUT: %a.patt: %pattern_type.a3b = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.421] -// CHECK:STDOUT: %return.param_patt: %pattern_type.a3b = value_param_pattern [concrete = constants.%return.param_patt.0c1] -// CHECK:STDOUT: %return.patt: %pattern_type.a3b = at_binding_pattern r#return, %return.param_patt [concrete = constants.%return.patt.998] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %ptr.749 = value_param call_param0 -// CHECK:STDOUT: %.1: type = splice_block constants.%ptr.749 [concrete = constants.%ptr.749] { -// CHECK:STDOUT: %int_64.2: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] -// CHECK:STDOUT: %f64.3: type = class_type @Float, @Float(constants.%int_64) [concrete = constants.%f64.dc1] -// CHECK:STDOUT: %f64.4: type = type_literal %f64.3 [concrete = constants.%f64.dc1] -// CHECK:STDOUT: } -// CHECK:STDOUT: %a: %ptr.749 = wrapper_binding a, %a.param -// CHECK:STDOUT: %return.param: %ptr.749 = value_param call_param1 -// CHECK:STDOUT: %.2: type = splice_block constants.%ptr.749 [concrete = constants.%ptr.749] { -// CHECK:STDOUT: %int_64.1: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] -// CHECK:STDOUT: %f64.1: type = class_type @Float, @Float(constants.%int_64) [concrete = constants.%f64.dc1] -// CHECK:STDOUT: %f64.2: type = type_literal %f64.1 [concrete = constants.%f64.dc1] -// CHECK:STDOUT: } -// CHECK:STDOUT: %return: %ptr.749 = wrapper_binding r#return, %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.c4c: @Core.FloatLiteral.as.ImplicitAs.impl.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.type (%Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.063) = import_ref Core//prelude/parts/float, loc{{\d+_\d+}}, loaded [symbolic = @Core.FloatLiteral.as.ImplicitAs.impl.%Core.FloatLiteral.as.ImplicitAs.impl.Convert (constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.d4f)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table = impl_witness_table (%Core.import_ref.c4c), @Core.FloatLiteral.as.ImplicitAs.impl [concrete] -// CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type] -// CHECK:STDOUT: %Core.import_ref.e69: @Float.as.Copy.impl.%Float.as.Copy.impl.Op.type (%Float.as.Copy.impl.Op.type.ff3) = import_ref Core//prelude/parts/float, loc{{\d+_\d+}}, loaded [symbolic = @Float.as.Copy.impl.%Float.as.Copy.impl.Op (constants.%Float.as.Copy.impl.Op.d93)] -// CHECK:STDOUT: %Copy.impl_witness_table.4e8 = impl_witness_table (%Core.import_ref.e69), @Float.as.Copy.impl [concrete] -// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "floating_point_literal.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %float: Core.FloatLiteral = float_literal_value 18e307 [concrete = constants.%float] -// CHECK:STDOUT: %impl.elem0.loc15_11.1: %.2d7 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.cf0] -// CHECK:STDOUT: %bound_method.loc15_11.1: = bound_method %float, %impl.elem0.loc15_11.1 [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.bound] -// CHECK:STDOUT: %specific_fn.loc15_11.1: = specific_function %impl.elem0.loc15_11.1, @Core.FloatLiteral.as.ImplicitAs.impl.Convert(constants.%int_64) [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc15_11.2: = bound_method %float, %specific_fn.loc15_11.1 [concrete = constants.%bound_method] -// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.call: init %f64.dc1 = call %bound_method.loc15_11.2(%float) [concrete = ] -// CHECK:STDOUT: %.loc15_11.1: %f64.dc1 = value_of_initializer %Core.FloatLiteral.as.ImplicitAs.impl.Convert.call [concrete = ] -// CHECK:STDOUT: %.loc15_11.2: %f64.dc1 = converted %float, %.loc15_11.1 [concrete = ] -// CHECK:STDOUT: %impl.elem0.loc15_11.2: %.557 = impl_witness_access constants.%Copy.impl_witness.873, element0 [concrete = constants.%Float.as.Copy.impl.Op.9c2] -// CHECK:STDOUT: %bound_method.loc15_11.3: = bound_method %.loc15_11.2, %impl.elem0.loc15_11.2 [concrete = ] -// CHECK:STDOUT: %specific_fn.loc15_11.2: = specific_function %impl.elem0.loc15_11.2, @Float.as.Copy.impl.Op(constants.%int_64) [concrete = constants.%Float.as.Copy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc15_11.4: = bound_method %.loc15_11.2, %specific_fn.loc15_11.2 [concrete = ] -// CHECK:STDOUT: %Float.as.Copy.impl.Op.call: init %f64.dc1 = call %bound_method.loc15_11.4(%.loc15_11.2) [concrete = ] -// CHECK:STDOUT: %.loc15_11.3: ref %f64.dc1 = temporary_storage -// CHECK:STDOUT: %.loc15_11.4: ref %f64.dc1 = temporary %.loc15_11.3, %Float.as.Copy.impl.Op.call [concrete = ] -// CHECK:STDOUT: %addr.loc15_19.1: %ptr.749 = addr_of %.loc15_11.4 [concrete = ] -// CHECK:STDOUT: %.loc15_19.1: ref %f64.dc1 = temporary_storage -// CHECK:STDOUT: %addr.loc15_19.2: %ptr.749 = addr_of %.loc15_19.1 -// CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc15_19.1, %addr.loc15_19.2) -// CHECK:STDOUT: %.loc15_19.2: init %f64.dc1 to %.loc15_19.1 = mark_in_place_init %foo__carbon_thunk.call -// CHECK:STDOUT: %.loc15_19.3: ref %f64.dc1 = temporary %.loc15_19.1, %.loc15_19.2 -// CHECK:STDOUT: %Destroy.Op.bound: = bound_method %.loc15_19.3, constants.%Destroy.Op.1a2547.2 -// CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%.loc15_19.3) -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @foo(%a.param: %f64.dc1) -> out %return.param: %f64.dc1; -// CHECK:STDOUT: -// CHECK:STDOUT: fn @foo__carbon_thunk(%a.param: %ptr.749, %return.param: %ptr.749); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc15_19.1(%self.param: ref %f64.794) = "no_op"; -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc15_19.2(%self.param: ref %f64.dc1) { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: --- struct_init.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %.469: Core.Form = init_form %empty_struct_type [concrete] -// CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.a96 = out_param_pattern [concrete] -// CHECK:STDOUT: %return.patt: %pattern_type.a96 = return_slot_pattern %return.param_patt, %empty_struct_type [concrete] -// CHECK:STDOUT: %MakeEmpty.type: type = fn_type @MakeEmpty [concrete] -// CHECK:STDOUT: %MakeEmpty: %MakeEmpty.type = struct_value () [concrete] -// CHECK:STDOUT: %value.param_patt: %pattern_type.a96 = value_param_pattern [concrete] -// CHECK:STDOUT: %value.patt: %pattern_type.a96 = at_binding_pattern value, %value.param_patt [concrete] -// CHECK:STDOUT: %reference.param_patt: %pattern_type.a96 = ref_param_pattern [concrete] -// CHECK:STDOUT: %reference.patt: %pattern_type.a96 = at_binding_pattern reference, %reference.param_patt [concrete] -// CHECK:STDOUT: %Empty.type: type = fn_type @Empty [concrete] -// CHECK:STDOUT: %Empty: %Empty.type = struct_value () [concrete] -// CHECK:STDOUT: %PassNoFields.cpp_overload_set.type: type = cpp_overload_set_type @PassNoFields.cpp_overload_set [concrete] -// CHECK:STDOUT: %PassNoFields.cpp_overload_set.value: %PassNoFields.cpp_overload_set.type = cpp_overload_set_value @PassNoFields.cpp_overload_set [concrete] -// CHECK:STDOUT: %NoFields: type = class_type @NoFields [concrete] -// CHECK:STDOUT: %ptr.027: type = ptr_type %NoFields [concrete] -// CHECK:STDOUT: %pattern_type.80e: type = pattern_type %ptr.027 [concrete] -// CHECK:STDOUT: %s.param_patt.5f3: %pattern_type.80e = value_param_pattern [concrete] -// CHECK:STDOUT: %s.patt.b99: %pattern_type.80e = at_binding_pattern s, %s.param_patt.5f3 [concrete] -// CHECK:STDOUT: %PassNoFields__carbon_thunk.type: type = fn_type @PassNoFields__carbon_thunk [concrete] -// CHECK:STDOUT: %PassNoFields__carbon_thunk: %PassNoFields__carbon_thunk.type = struct_value () [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %NoFields.val: %NoFields = struct_value () [concrete] -// CHECK:STDOUT: %.c7e: ref %NoFields = temporary invalid, %NoFields.val [concrete] -// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] -// CHECK:STDOUT: %Destroy.Op: %Destroy.Op.type = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Destroy = %Core.Destroy -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .PassNoFields = %PassNoFields.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %PassNoFields.cpp_overload_set.value: %PassNoFields.cpp_overload_set.type = cpp_overload_set_value @PassNoFields.cpp_overload_set [concrete = constants.%PassNoFields.cpp_overload_set.value] -// CHECK:STDOUT: %PassNoFields__carbon_thunk.decl: %PassNoFields__carbon_thunk.type = fn_decl @PassNoFields__carbon_thunk [concrete = constants.%PassNoFields__carbon_thunk] { -// CHECK:STDOUT: %s.param_patt: %pattern_type.80e = value_param_pattern [concrete = constants.%s.param_patt.5f3] -// CHECK:STDOUT: %s.patt: %pattern_type.80e = at_binding_pattern s, %s.param_patt [concrete = constants.%s.patt.b99] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %s.param: %ptr.027 = value_param call_param0 -// CHECK:STDOUT: %s: %ptr.027 = wrapper_binding s, %s.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .MakeEmpty = %MakeEmpty.decl -// CHECK:STDOUT: .Empty = %Empty.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "struct_init.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %MakeEmpty.decl: %MakeEmpty.type = fn_decl @MakeEmpty [concrete = constants.%MakeEmpty] { -// CHECK:STDOUT: %return.param_patt: %pattern_type.a96 = out_param_pattern [concrete = constants.%return.param_patt] -// CHECK:STDOUT: %return.patt: %pattern_type.a96 = return_slot_pattern %return.param_patt, %.loc6_20.2 [concrete = constants.%return.patt] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc6_20.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc6_20.2: type = converted %.loc6_20.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.loc6_20.3: Core.Form = init_form %.loc6_20.2 [concrete = constants.%.469] -// CHECK:STDOUT: %return.param: ref %empty_struct_type = out_param call_param0 -// CHECK:STDOUT: %return: ref %empty_struct_type = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Empty.decl: %Empty.type = fn_decl @Empty [concrete = constants.%Empty] { -// CHECK:STDOUT: %value.param_patt: %pattern_type.a96 = value_param_pattern [concrete = constants.%value.param_patt] -// CHECK:STDOUT: %value.patt: %pattern_type.a96 = at_binding_pattern value, %value.param_patt [concrete = constants.%value.patt] -// CHECK:STDOUT: %reference.param_patt: %pattern_type.a96 = ref_param_pattern [concrete = constants.%reference.param_patt] -// CHECK:STDOUT: %reference.patt: %pattern_type.a96 = at_binding_pattern reference, %reference.param_patt [concrete = constants.%reference.patt] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %value.param: %empty_struct_type = value_param call_param0 -// CHECK:STDOUT: %.loc8_18.1: type = splice_block %.loc8_18.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc8_18.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc8_18.3: type = converted %.loc8_18.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: } -// CHECK:STDOUT: %value: %empty_struct_type = wrapper_binding value, %value.param -// CHECK:STDOUT: %reference.param: ref %empty_struct_type = ref_param call_param1 -// CHECK:STDOUT: %.loc8_37.1: type = splice_block %.loc8_37.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc8_37.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc8_37.3: type = converted %.loc8_37.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: } -// CHECK:STDOUT: %reference: ref %empty_struct_type = wrapper_binding reference, %reference.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @NoFields { -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @MakeEmpty() -> out %return.param: %empty_struct_type; -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Empty(%value.param: %empty_struct_type, %reference.param: ref %empty_struct_type) { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref.loc9: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassNoFields.ref.loc9: %PassNoFields.cpp_overload_set.type = name_ref PassNoFields, imports.%PassNoFields.cpp_overload_set.value [concrete = constants.%PassNoFields.cpp_overload_set.value] -// CHECK:STDOUT: %.loc9_21.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc9_21.2: ref %NoFields = temporary_storage -// CHECK:STDOUT: %.loc9_21.3: init %NoFields to %.loc9_21.2 = class_init () [concrete = constants.%NoFields.val] -// CHECK:STDOUT: %.loc9_21.4: init %NoFields = converted %.loc9_21.1, %.loc9_21.3 [concrete = constants.%NoFields.val] -// CHECK:STDOUT: %.loc9_21.5: ref %NoFields = temporary %.loc9_21.2, %.loc9_21.4 [concrete = constants.%.c7e] -// CHECK:STDOUT: %.loc9_21.6: %NoFields = acquire_value %.loc9_21.5 [concrete = constants.%NoFields.val] -// CHECK:STDOUT: %.loc9_21.7: ref %NoFields = value_as_ref %.loc9_21.6 -// CHECK:STDOUT: %addr.loc9: %ptr.027 = addr_of %.loc9_21.7 -// CHECK:STDOUT: %PassNoFields__carbon_thunk.call.loc9: init %empty_tuple.type = call imports.%PassNoFields__carbon_thunk.decl(%addr.loc9) -// CHECK:STDOUT: %Cpp.ref.loc11: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassNoFields.ref.loc11: %PassNoFields.cpp_overload_set.type = name_ref PassNoFields, imports.%PassNoFields.cpp_overload_set.value [concrete = constants.%PassNoFields.cpp_overload_set.value] -// CHECK:STDOUT: %value.ref: %empty_struct_type = name_ref value, %value -// CHECK:STDOUT: %.loc11_20.1: ref %NoFields = temporary_storage -// CHECK:STDOUT: %.loc11_20.2: init %NoFields to %.loc11_20.1 = class_init () [concrete = constants.%NoFields.val] -// CHECK:STDOUT: %.loc11_20.3: init %NoFields = converted %value.ref, %.loc11_20.2 [concrete = constants.%NoFields.val] -// CHECK:STDOUT: %.loc11_20.4: ref %NoFields = temporary %.loc11_20.1, %.loc11_20.3 [concrete = constants.%.c7e] -// CHECK:STDOUT: %.loc11_20.5: %NoFields = acquire_value %.loc11_20.4 [concrete = constants.%NoFields.val] -// CHECK:STDOUT: %.loc11_20.6: ref %NoFields = value_as_ref %.loc11_20.5 -// CHECK:STDOUT: %addr.loc11: %ptr.027 = addr_of %.loc11_20.6 -// CHECK:STDOUT: %PassNoFields__carbon_thunk.call.loc11: init %empty_tuple.type = call imports.%PassNoFields__carbon_thunk.decl(%addr.loc11) -// CHECK:STDOUT: %Cpp.ref.loc13: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassNoFields.ref.loc13: %PassNoFields.cpp_overload_set.type = name_ref PassNoFields, imports.%PassNoFields.cpp_overload_set.value [concrete = constants.%PassNoFields.cpp_overload_set.value] -// CHECK:STDOUT: %reference.ref: ref %empty_struct_type = name_ref reference, %reference -// CHECK:STDOUT: %.loc13_20.1: ref %NoFields = temporary_storage -// CHECK:STDOUT: %.loc13_20.2: init %NoFields to %.loc13_20.1 = class_init () [concrete = constants.%NoFields.val] -// CHECK:STDOUT: %.loc13_20.3: init %NoFields = converted %reference.ref, %.loc13_20.2 [concrete = constants.%NoFields.val] -// CHECK:STDOUT: %.loc13_20.4: ref %NoFields = temporary %.loc13_20.1, %.loc13_20.3 [concrete = constants.%.c7e] -// CHECK:STDOUT: %.loc13_20.5: %NoFields = acquire_value %.loc13_20.4 [concrete = constants.%NoFields.val] -// CHECK:STDOUT: %.loc13_20.6: ref %NoFields = value_as_ref %.loc13_20.5 -// CHECK:STDOUT: %addr.loc13: %ptr.027 = addr_of %.loc13_20.6 -// CHECK:STDOUT: %PassNoFields__carbon_thunk.call.loc13: init %empty_tuple.type = call imports.%PassNoFields__carbon_thunk.decl(%addr.loc13) -// CHECK:STDOUT: %Cpp.ref.loc15: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassNoFields.ref.loc15: %PassNoFields.cpp_overload_set.type = name_ref PassNoFields, imports.%PassNoFields.cpp_overload_set.value [concrete = constants.%PassNoFields.cpp_overload_set.value] -// CHECK:STDOUT: %MakeEmpty.ref: %MakeEmpty.type = name_ref MakeEmpty, file.%MakeEmpty.decl [concrete = constants.%MakeEmpty] -// CHECK:STDOUT: %MakeEmpty.call: init %empty_struct_type = call %MakeEmpty.ref() -// CHECK:STDOUT: %.loc15_30.1: ref %empty_struct_type = temporary_storage -// CHECK:STDOUT: %.loc15_30.2: ref %empty_struct_type = temporary %.loc15_30.1, %MakeEmpty.call -// CHECK:STDOUT: %.loc15_30.3: ref %NoFields = temporary_storage -// CHECK:STDOUT: %.loc15_30.4: init %NoFields to %.loc15_30.3 = class_init () [concrete = constants.%NoFields.val] -// CHECK:STDOUT: %.loc15_30.5: init %NoFields = converted %MakeEmpty.call, %.loc15_30.4 [concrete = constants.%NoFields.val] -// CHECK:STDOUT: %.loc15_30.6: ref %NoFields = temporary %.loc15_30.3, %.loc15_30.5 [concrete = constants.%.c7e] -// CHECK:STDOUT: %.loc15_30.7: %NoFields = acquire_value %.loc15_30.6 [concrete = constants.%NoFields.val] -// CHECK:STDOUT: %.loc15_30.8: ref %NoFields = value_as_ref %.loc15_30.7 -// CHECK:STDOUT: %addr.loc15: %ptr.027 = addr_of %.loc15_30.8 -// CHECK:STDOUT: %PassNoFields__carbon_thunk.call.loc15: init %empty_tuple.type = call imports.%PassNoFields__carbon_thunk.decl(%addr.loc15) -// CHECK:STDOUT: %Destroy.Op.bound: = bound_method %.loc15_30.2, constants.%Destroy.Op -// CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%.loc15_30.2) -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @PassNoFields(%s.param: %NoFields); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @PassNoFields__carbon_thunk(%s.param: %ptr.027); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @NoFields.cpp_destructor(%self.param: ref %NoFields) = "no_op"; -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op(%self.param: ref %empty_struct_type) = "no_op"; -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_todo_struct_init_nonempty.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %struct_type.a.b.c.fde: type = struct_type {.a: %i32, .b: %i32, .c: %i32} [concrete] -// CHECK:STDOUT: %.5b5: Core.Form = init_form %struct_type.a.b.c.fde [concrete] -// CHECK:STDOUT: %pattern_type.9c3: type = pattern_type %struct_type.a.b.c.fde [concrete] -// CHECK:STDOUT: %return.param_patt.e20: %pattern_type.9c3 = out_param_pattern [concrete] -// CHECK:STDOUT: %return.patt.94b: %pattern_type.9c3 = return_slot_pattern %return.param_patt.e20, %struct_type.a.b.c.fde [concrete] -// CHECK:STDOUT: %MakeThreeFields.type: type = fn_type @MakeThreeFields [concrete] -// CHECK:STDOUT: %MakeThreeFields: %MakeThreeFields.type = struct_value () [concrete] -// CHECK:STDOUT: %value.param_patt: %pattern_type.9c3 = value_param_pattern [concrete] -// CHECK:STDOUT: %value.patt: %pattern_type.9c3 = at_binding_pattern value, %value.param_patt [concrete] -// CHECK:STDOUT: %reference.param_patt: %pattern_type.9c3 = ref_param_pattern [concrete] -// CHECK:STDOUT: %reference.patt: %pattern_type.9c3 = at_binding_pattern reference, %reference.param_patt [concrete] -// CHECK:STDOUT: %ThreeFields.type: type = fn_type @ThreeFields.loc8 [concrete] -// CHECK:STDOUT: %ThreeFields.16d: %ThreeFields.type = struct_value () [concrete] -// CHECK:STDOUT: %PassThreeFields.cpp_overload_set.type: type = cpp_overload_set_type @PassThreeFields.cpp_overload_set [concrete] -// CHECK:STDOUT: %PassThreeFields.cpp_overload_set.value: %PassThreeFields.cpp_overload_set.type = cpp_overload_set_value @PassThreeFields.cpp_overload_set [concrete] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] -// CHECK:STDOUT: %struct_type.a.b.c.90d: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral, .c: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %struct.ec0: %struct_type.a.b.c.90d = struct_value (%int_1, %int_2, %int_3) [concrete] -// CHECK:STDOUT: %ThreeFields.1b4: type = class_type @ThreeFields.1 [concrete] -// CHECK:STDOUT: %ptr.6c3: type = ptr_type %ThreeFields.1b4 [concrete] -// CHECK:STDOUT: %pattern_type.ecf: type = pattern_type %ptr.6c3 [concrete] -// CHECK:STDOUT: %t.param_patt.f34: %pattern_type.ecf = value_param_pattern [concrete] -// CHECK:STDOUT: %t.patt.81a: %pattern_type.ecf = at_binding_pattern t, %t.param_patt.f34 [concrete] -// CHECK:STDOUT: %PassThreeFields__carbon_thunk.type: type = fn_type @PassThreeFields__carbon_thunk [concrete] -// CHECK:STDOUT: %PassThreeFields__carbon_thunk: %PassThreeFields__carbon_thunk.type = struct_value () [concrete] -// CHECK:STDOUT: %ThreeFields.elem: type = unbound_element_type %ThreeFields.1b4, %i32 [concrete] -// CHECK:STDOUT: %.8e5: type = custom_layout_type {size=12, align=4, .a@0: %i32, .b@4: %i32, .c@8: %i32} [concrete] -// CHECK:STDOUT: %complete_type.7b4: = complete_type_witness %.8e5 [concrete] -// CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete] -// CHECK:STDOUT: %struct_type.b.c.a: type = struct_type {.b: Core.IntLiteral, .c: Core.IntLiteral, .a: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %struct.d34: %struct_type.b.c.a = struct_value (%int_1, %int_2, %int_3) [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .PassThreeFields = %PassThreeFields.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %PassThreeFields.cpp_overload_set.value: %PassThreeFields.cpp_overload_set.type = cpp_overload_set_value @PassThreeFields.cpp_overload_set [concrete = constants.%PassThreeFields.cpp_overload_set.value] -// CHECK:STDOUT: %PassThreeFields__carbon_thunk.decl: %PassThreeFields__carbon_thunk.type = fn_decl @PassThreeFields__carbon_thunk [concrete = constants.%PassThreeFields__carbon_thunk] { -// CHECK:STDOUT: %t.param_patt: %pattern_type.ecf = value_param_pattern [concrete = constants.%t.param_patt.f34] -// CHECK:STDOUT: %t.patt: %pattern_type.ecf = at_binding_pattern t, %t.param_patt [concrete = constants.%t.patt.81a] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %t.param: %ptr.6c3 = value_param call_param0 -// CHECK:STDOUT: %t: %ptr.6c3 = wrapper_binding t, %t.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .MakeThreeFields = %MakeThreeFields.decl -// CHECK:STDOUT: .ThreeFields = %ThreeFields.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "struct_init.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %MakeThreeFields.decl: %MakeThreeFields.type = fn_decl @MakeThreeFields [concrete = constants.%MakeThreeFields] { -// CHECK:STDOUT: %return.param_patt: %pattern_type.9c3 = out_param_pattern [concrete = constants.%return.param_patt.e20] -// CHECK:STDOUT: %return.patt: %pattern_type.9c3 = return_slot_pattern %return.param_patt, %struct_type.a.b.c [concrete = constants.%return.patt.94b] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %i32.loc6_30: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %i32.loc6_39: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %i32.loc6_48: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %struct_type.a.b.c: type = struct_type {.a: %i32, .b: %i32, .c: %i32} [concrete = constants.%struct_type.a.b.c.fde] -// CHECK:STDOUT: %.loc6: Core.Form = init_form %struct_type.a.b.c [concrete = constants.%.5b5] -// CHECK:STDOUT: %return.param: ref %struct_type.a.b.c.fde = out_param call_param0 -// CHECK:STDOUT: %return: ref %struct_type.a.b.c.fde = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %ThreeFields.decl: %ThreeFields.type = fn_decl @ThreeFields.loc8 [concrete = constants.%ThreeFields.16d] { -// CHECK:STDOUT: %value.param_patt: %pattern_type.9c3 = value_param_pattern [concrete = constants.%value.param_patt] -// CHECK:STDOUT: %value.patt: %pattern_type.9c3 = at_binding_pattern value, %value.param_patt [concrete = constants.%value.patt] -// CHECK:STDOUT: %reference.param_patt: %pattern_type.9c3 = ref_param_pattern [concrete = constants.%reference.param_patt] -// CHECK:STDOUT: %reference.patt: %pattern_type.9c3 = at_binding_pattern reference, %reference.param_patt [concrete = constants.%reference.patt] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %value.param: %struct_type.a.b.c.fde = value_param call_param0 -// CHECK:STDOUT: %.loc8_49: type = splice_block %struct_type.a.b.c.loc8_49 [concrete = constants.%struct_type.a.b.c.fde] { -// CHECK:STDOUT: %i32.loc8_28: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %i32.loc8_37: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %i32.loc8_46: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %struct_type.a.b.c.loc8_49: type = struct_type {.a: %i32, .b: %i32, .c: %i32} [concrete = constants.%struct_type.a.b.c.fde] -// CHECK:STDOUT: } -// CHECK:STDOUT: %value: %struct_type.a.b.c.fde = wrapper_binding value, %value.param -// CHECK:STDOUT: %reference.param: ref %struct_type.a.b.c.fde = ref_param call_param1 -// CHECK:STDOUT: %.loc8_93: type = splice_block %struct_type.a.b.c.loc8_93 [concrete = constants.%struct_type.a.b.c.fde] { -// CHECK:STDOUT: %i32.loc8_72: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %i32.loc8_81: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %i32.loc8_90: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %struct_type.a.b.c.loc8_93: type = struct_type {.a: %i32, .b: %i32, .c: %i32} [concrete = constants.%struct_type.a.b.c.fde] -// CHECK:STDOUT: } -// CHECK:STDOUT: %reference: ref %struct_type.a.b.c.fde = wrapper_binding reference, %reference.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @ThreeFields.1 { -// CHECK:STDOUT: %int_32.1: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.1: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %i32.2: type = type_literal %i32.1 [concrete = constants.%i32] -// CHECK:STDOUT: %.1: %ThreeFields.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %int_32.2: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.3: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %i32.4: type = type_literal %i32.3 [concrete = constants.%i32] -// CHECK:STDOUT: %.2: %ThreeFields.elem = field_decl b, element1 [concrete] -// CHECK:STDOUT: %int_32.3: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.5: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %i32.6: type = type_literal %i32.5 [concrete = constants.%i32] -// CHECK:STDOUT: %.3: %ThreeFields.elem = field_decl c, element2 [concrete] -// CHECK:STDOUT: %.4: type = custom_layout_type {size=12, align=4, .a@0: %i32, .b@4: %i32, .c@8: %i32} [concrete = constants.%.8e5] -// CHECK:STDOUT: %complete_type: = complete_type_witness %.4 [concrete = constants.%complete_type.7b4] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @MakeThreeFields() -> out %return.param: %struct_type.a.b.c.fde; -// CHECK:STDOUT: -// CHECK:STDOUT: fn @ThreeFields.loc8(%value.param: %struct_type.a.b.c.fde, %reference.param: ref %struct_type.a.b.c.fde) { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref.loc20: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassThreeFields.ref.loc20: %PassThreeFields.cpp_overload_set.type = name_ref PassThreeFields, imports.%PassThreeFields.cpp_overload_set.value [concrete = constants.%PassThreeFields.cpp_overload_set.value] -// CHECK:STDOUT: %int_1.loc20: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %int_2.loc20: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] -// CHECK:STDOUT: %int_3.loc20: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] -// CHECK:STDOUT: %.loc20_46.1: %struct_type.a.b.c.90d = struct_literal (%int_1.loc20, %int_2.loc20, %int_3.loc20) [concrete = constants.%struct.ec0] -// CHECK:STDOUT: %.loc20_46.2: %ThreeFields.1b4 = converted %.loc20_46.1, [concrete = ] -// CHECK:STDOUT: %addr.loc20: %ptr.6c3 = addr_of [concrete = ] -// CHECK:STDOUT: %PassThreeFields__carbon_thunk.call.loc20: init %empty_tuple.type = call imports.%PassThreeFields__carbon_thunk.decl(%addr.loc20) -// CHECK:STDOUT: %Cpp.ref.loc33: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassThreeFields.ref.loc33: %PassThreeFields.cpp_overload_set.type = name_ref PassThreeFields, imports.%PassThreeFields.cpp_overload_set.value [concrete = constants.%PassThreeFields.cpp_overload_set.value] -// CHECK:STDOUT: %value.ref: %struct_type.a.b.c.fde = name_ref value, %value -// CHECK:STDOUT: %.loc33: %ThreeFields.1b4 = converted %value.ref, [concrete = ] -// CHECK:STDOUT: %addr.loc33: %ptr.6c3 = addr_of [concrete = ] -// CHECK:STDOUT: %PassThreeFields__carbon_thunk.call.loc33: init %empty_tuple.type = call imports.%PassThreeFields__carbon_thunk.decl(%addr.loc33) -// CHECK:STDOUT: %Cpp.ref.loc46: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassThreeFields.ref.loc46: %PassThreeFields.cpp_overload_set.type = name_ref PassThreeFields, imports.%PassThreeFields.cpp_overload_set.value [concrete = constants.%PassThreeFields.cpp_overload_set.value] -// CHECK:STDOUT: %reference.ref: ref %struct_type.a.b.c.fde = name_ref reference, %reference -// CHECK:STDOUT: %.loc46: %ThreeFields.1b4 = converted %reference.ref, [concrete = ] -// CHECK:STDOUT: %addr.loc46: %ptr.6c3 = addr_of [concrete = ] -// CHECK:STDOUT: %PassThreeFields__carbon_thunk.call.loc46: init %empty_tuple.type = call imports.%PassThreeFields__carbon_thunk.decl(%addr.loc46) -// CHECK:STDOUT: %Cpp.ref.loc59: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassThreeFields.ref.loc59: %PassThreeFields.cpp_overload_set.type = name_ref PassThreeFields, imports.%PassThreeFields.cpp_overload_set.value [concrete = constants.%PassThreeFields.cpp_overload_set.value] -// CHECK:STDOUT: %MakeThreeFields.ref: %MakeThreeFields.type = name_ref MakeThreeFields, file.%MakeThreeFields.decl [concrete = constants.%MakeThreeFields] -// CHECK:STDOUT: %.loc59_39.1: ref %struct_type.a.b.c.fde = temporary_storage -// CHECK:STDOUT: %MakeThreeFields.call: init %struct_type.a.b.c.fde to %.loc59_39.1 = call %MakeThreeFields.ref() -// CHECK:STDOUT: %.loc59_39.2: %ThreeFields.1b4 = converted %MakeThreeFields.call, [concrete = ] -// CHECK:STDOUT: %addr.loc59: %ptr.6c3 = addr_of [concrete = ] -// CHECK:STDOUT: %PassThreeFields__carbon_thunk.call.loc59: init %empty_tuple.type = call imports.%PassThreeFields__carbon_thunk.decl(%addr.loc59) -// CHECK:STDOUT: %Cpp.ref.loc72: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassThreeFields.ref.loc72: %PassThreeFields.cpp_overload_set.type = name_ref PassThreeFields, imports.%PassThreeFields.cpp_overload_set.value [concrete = constants.%PassThreeFields.cpp_overload_set.value] -// CHECK:STDOUT: %int_1.loc72: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %int_2.loc72: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] -// CHECK:STDOUT: %int_3.loc72: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] -// CHECK:STDOUT: %.loc72_46.1: %struct_type.b.c.a = struct_literal (%int_1.loc72, %int_2.loc72, %int_3.loc72) [concrete = constants.%struct.d34] -// CHECK:STDOUT: %.loc72_46.2: %ThreeFields.1b4 = converted %.loc72_46.1, [concrete = ] -// CHECK:STDOUT: %addr.loc72: %ptr.6c3 = addr_of [concrete = ] -// CHECK:STDOUT: %PassThreeFields__carbon_thunk.call.loc72: init %empty_tuple.type = call imports.%PassThreeFields__carbon_thunk.decl(%addr.loc72) -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @PassThreeFields(%t.param: %ThreeFields.1b4); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @PassThreeFields__carbon_thunk(%t.param: %ptr.6c3); -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_struct_init_field_mismatch.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %PassThreeFields.cpp_overload_set.type: type = cpp_overload_set_type @PassThreeFields.cpp_overload_set [concrete] -// CHECK:STDOUT: %PassThreeFields.cpp_overload_set.value: %PassThreeFields.cpp_overload_set.type = cpp_overload_set_value @PassThreeFields.cpp_overload_set [concrete] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] -// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete] -// CHECK:STDOUT: %struct_type.a.b.c.d: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral, .c: Core.IntLiteral, .d: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %struct.9a6: %struct_type.a.b.c.d = struct_value (%int_1, %int_2, %int_3, %int_4) [concrete] -// CHECK:STDOUT: %struct_type.a.x.c: type = struct_type {.a: Core.IntLiteral, .x: Core.IntLiteral, .c: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %struct.11a: %struct_type.a.x.c = struct_value (%int_1, %int_2, %int_3) [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .PassThreeFields = %PassThreeFields.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %PassThreeFields.cpp_overload_set.value: %PassThreeFields.cpp_overload_set.type = cpp_overload_set_value @PassThreeFields.cpp_overload_set [concrete = constants.%PassThreeFields.cpp_overload_set.value] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "struct_init.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref.loc15: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassThreeFields.ref.loc15: %PassThreeFields.cpp_overload_set.type = name_ref PassThreeFields, imports.%PassThreeFields.cpp_overload_set.value [concrete = constants.%PassThreeFields.cpp_overload_set.value] -// CHECK:STDOUT: %int_1.loc15: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %int_2.loc15: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] -// CHECK:STDOUT: %int_3.loc15: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] -// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4] -// CHECK:STDOUT: %.loc15: %struct_type.a.b.c.d = struct_literal (%int_1.loc15, %int_2.loc15, %int_3.loc15, %int_4) [concrete = constants.%struct.9a6] -// CHECK:STDOUT: %Cpp.ref.loc25: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassThreeFields.ref.loc25: %PassThreeFields.cpp_overload_set.type = name_ref PassThreeFields, imports.%PassThreeFields.cpp_overload_set.value [concrete = constants.%PassThreeFields.cpp_overload_set.value] -// CHECK:STDOUT: %int_1.loc25: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %int_2.loc25: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] -// CHECK:STDOUT: %int_3.loc25: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] -// CHECK:STDOUT: %.loc25: %struct_type.a.x.c = struct_literal (%int_1.loc25, %int_2.loc25, %int_3.loc25) [concrete = constants.%struct.11a] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_struct_init_unsupported_field_name.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %PassThreeFields.cpp_overload_set.type: type = cpp_overload_set_type @PassThreeFields.cpp_overload_set [concrete] -// CHECK:STDOUT: %PassThreeFields.cpp_overload_set.value: %PassThreeFields.cpp_overload_set.type = cpp_overload_set_value @PassThreeFields.cpp_overload_set [concrete] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %struct: %struct_type.base = struct_value (%int_1) [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .PassThreeFields = %PassThreeFields.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %PassThreeFields.cpp_overload_set.value: %PassThreeFields.cpp_overload_set.type = cpp_overload_set_value @PassThreeFields.cpp_overload_set [concrete = constants.%PassThreeFields.cpp_overload_set.value] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "struct_init.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassThreeFields.ref: %PassThreeFields.cpp_overload_set.type = name_ref PassThreeFields, imports.%PassThreeFields.cpp_overload_set.value [concrete = constants.%PassThreeFields.cpp_overload_set.value] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %.loc11: %struct_type.base = struct_literal (%int_1) [concrete = constants.%struct] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_struct_init_from_tuple.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %.262: Core.Form = init_form %empty_tuple.type [concrete] -// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %return.param_patt.900: %pattern_type.cb1 = out_param_pattern [concrete] -// CHECK:STDOUT: %return.patt.427: %pattern_type.cb1 = return_slot_pattern %return.param_patt.900, %empty_tuple.type [concrete] -// CHECK:STDOUT: %MakeEmpty.type: type = fn_type @MakeEmpty [concrete] -// CHECK:STDOUT: %MakeEmpty: %MakeEmpty.type = struct_value () [concrete] -// CHECK:STDOUT: %value.param_patt.df1: %pattern_type.cb1 = value_param_pattern [concrete] -// CHECK:STDOUT: %value.patt.0a7: %pattern_type.cb1 = at_binding_pattern value, %value.param_patt.df1 [concrete] -// CHECK:STDOUT: %reference.param_patt.0e3: %pattern_type.cb1 = ref_param_pattern [concrete] -// CHECK:STDOUT: %reference.patt.231: %pattern_type.cb1 = at_binding_pattern reference, %reference.param_patt.0e3 [concrete] -// CHECK:STDOUT: %Empty.type: type = fn_type @Empty [concrete] -// CHECK:STDOUT: %Empty: %Empty.type = struct_value () [concrete] -// CHECK:STDOUT: %PassNoFields.cpp_overload_set.type: type = cpp_overload_set_type @PassNoFields.cpp_overload_set [concrete] -// CHECK:STDOUT: %PassNoFields.cpp_overload_set.value: %PassNoFields.cpp_overload_set.type = cpp_overload_set_value @PassNoFields.cpp_overload_set [concrete] -// CHECK:STDOUT: %NoFields: type = class_type @NoFields [concrete] -// CHECK:STDOUT: %ptr.027: type = ptr_type %NoFields [concrete] -// CHECK:STDOUT: %pattern_type.80e: type = pattern_type %ptr.027 [concrete] -// CHECK:STDOUT: %s.param_patt.5f3: %pattern_type.80e = value_param_pattern [concrete] -// CHECK:STDOUT: %s.patt.b99: %pattern_type.80e = at_binding_pattern s, %s.param_patt.5f3 [concrete] -// CHECK:STDOUT: %PassNoFields__carbon_thunk.type: type = fn_type @PassNoFields__carbon_thunk [concrete] -// CHECK:STDOUT: %PassNoFields__carbon_thunk: %PassNoFields__carbon_thunk.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %tuple.type.ff9: type = tuple_type (type, type, type) [concrete] -// CHECK:STDOUT: %tuple.04d: %tuple.type.ff9 = tuple_value (%i32, %i32, %i32) [concrete] -// CHECK:STDOUT: %tuple.type.555: type = tuple_type (%i32, %i32, %i32) [concrete] -// CHECK:STDOUT: %.718: Core.Form = init_form %tuple.type.555 [concrete] -// CHECK:STDOUT: %pattern_type.777: type = pattern_type %tuple.type.555 [concrete] -// CHECK:STDOUT: %return.param_patt.789: %pattern_type.777 = out_param_pattern [concrete] -// CHECK:STDOUT: %return.patt.e16: %pattern_type.777 = return_slot_pattern %return.param_patt.789, %tuple.type.555 [concrete] -// CHECK:STDOUT: %MakeThreeFields.type: type = fn_type @MakeThreeFields [concrete] -// CHECK:STDOUT: %MakeThreeFields: %MakeThreeFields.type = struct_value () [concrete] -// CHECK:STDOUT: %value.param_patt.9bf: %pattern_type.777 = value_param_pattern [concrete] -// CHECK:STDOUT: %value.patt.0a5: %pattern_type.777 = at_binding_pattern value, %value.param_patt.9bf [concrete] -// CHECK:STDOUT: %reference.param_patt.795: %pattern_type.777 = ref_param_pattern [concrete] -// CHECK:STDOUT: %reference.patt.f1c: %pattern_type.777 = at_binding_pattern reference, %reference.param_patt.795 [concrete] -// CHECK:STDOUT: %ThreeFields.type: type = fn_type @ThreeFields.loc67 [concrete] -// CHECK:STDOUT: %ThreeFields.16d: %ThreeFields.type = struct_value () [concrete] -// CHECK:STDOUT: %PassThreeFields.cpp_overload_set.type: type = cpp_overload_set_type @PassThreeFields.cpp_overload_set [concrete] -// CHECK:STDOUT: %PassThreeFields.cpp_overload_set.value: %PassThreeFields.cpp_overload_set.type = cpp_overload_set_value @PassThreeFields.cpp_overload_set [concrete] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] -// CHECK:STDOUT: %tuple.type.37f: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [concrete] -// CHECK:STDOUT: %tuple.2d5: %tuple.type.37f = tuple_value (%int_1, %int_2, %int_3) [concrete] -// CHECK:STDOUT: %ThreeFields.1b4: type = class_type @ThreeFields.1 [concrete] -// CHECK:STDOUT: %ptr.6c3: type = ptr_type %ThreeFields.1b4 [concrete] -// CHECK:STDOUT: %pattern_type.ecf: type = pattern_type %ptr.6c3 [concrete] -// CHECK:STDOUT: %t.param_patt.f34: %pattern_type.ecf = value_param_pattern [concrete] -// CHECK:STDOUT: %t.patt.81a: %pattern_type.ecf = at_binding_pattern t, %t.param_patt.f34 [concrete] -// CHECK:STDOUT: %PassThreeFields__carbon_thunk.type: type = fn_type @PassThreeFields__carbon_thunk [concrete] -// CHECK:STDOUT: %PassThreeFields__carbon_thunk: %PassThreeFields__carbon_thunk.type = struct_value () [concrete] -// CHECK:STDOUT: %ThreeFields.elem: type = unbound_element_type %ThreeFields.1b4, %i32 [concrete] -// CHECK:STDOUT: %.8e5: type = custom_layout_type {size=12, align=4, .a@0: %i32, .b@4: %i32, .c@8: %i32} [concrete] -// CHECK:STDOUT: %complete_type.7b4: = complete_type_witness %.8e5 [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .PassNoFields = %PassNoFields.cpp_overload_set.value -// CHECK:STDOUT: .PassThreeFields = %PassThreeFields.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %PassNoFields.cpp_overload_set.value: %PassNoFields.cpp_overload_set.type = cpp_overload_set_value @PassNoFields.cpp_overload_set [concrete = constants.%PassNoFields.cpp_overload_set.value] -// CHECK:STDOUT: %PassNoFields__carbon_thunk.decl: %PassNoFields__carbon_thunk.type = fn_decl @PassNoFields__carbon_thunk [concrete = constants.%PassNoFields__carbon_thunk] { -// CHECK:STDOUT: %s.param_patt: %pattern_type.80e = value_param_pattern [concrete = constants.%s.param_patt.5f3] -// CHECK:STDOUT: %s.patt: %pattern_type.80e = at_binding_pattern s, %s.param_patt [concrete = constants.%s.patt.b99] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %s.param: %ptr.027 = value_param call_param0 -// CHECK:STDOUT: %s: %ptr.027 = wrapper_binding s, %s.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %PassThreeFields.cpp_overload_set.value: %PassThreeFields.cpp_overload_set.type = cpp_overload_set_value @PassThreeFields.cpp_overload_set [concrete = constants.%PassThreeFields.cpp_overload_set.value] -// CHECK:STDOUT: %PassThreeFields__carbon_thunk.decl: %PassThreeFields__carbon_thunk.type = fn_decl @PassThreeFields__carbon_thunk [concrete = constants.%PassThreeFields__carbon_thunk] { -// CHECK:STDOUT: %t.param_patt: %pattern_type.ecf = value_param_pattern [concrete = constants.%t.param_patt.f34] -// CHECK:STDOUT: %t.patt: %pattern_type.ecf = at_binding_pattern t, %t.param_patt [concrete = constants.%t.patt.81a] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %t.param: %ptr.6c3 = value_param call_param0 -// CHECK:STDOUT: %t: %ptr.6c3 = wrapper_binding t, %t.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .MakeEmpty = %MakeEmpty.decl -// CHECK:STDOUT: .Empty = %Empty.decl -// CHECK:STDOUT: .MakeThreeFields = %MakeThreeFields.decl -// CHECK:STDOUT: .ThreeFields = %ThreeFields.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "struct_init.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %MakeEmpty.decl: %MakeEmpty.type = fn_decl @MakeEmpty [concrete = constants.%MakeEmpty] { -// CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern [concrete = constants.%return.param_patt.900] -// CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern %return.param_patt, %.loc9_20.2 [concrete = constants.%return.patt.427] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc9_20.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc9_20.2: type = converted %.loc9_20.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc9_20.3: Core.Form = init_form %.loc9_20.2 [concrete = constants.%.262] -// CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 -// CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Empty.decl: %Empty.type = fn_decl @Empty [concrete = constants.%Empty] { -// CHECK:STDOUT: %value.param_patt: %pattern_type.cb1 = value_param_pattern [concrete = constants.%value.param_patt.df1] -// CHECK:STDOUT: %value.patt: %pattern_type.cb1 = at_binding_pattern value, %value.param_patt [concrete = constants.%value.patt.0a7] -// CHECK:STDOUT: %reference.param_patt: %pattern_type.cb1 = ref_param_pattern [concrete = constants.%reference.param_patt.0e3] -// CHECK:STDOUT: %reference.patt: %pattern_type.cb1 = at_binding_pattern reference, %reference.param_patt [concrete = constants.%reference.patt.231] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %value.param: %empty_tuple.type = value_param call_param0 -// CHECK:STDOUT: %.loc11_18.1: type = splice_block %.loc11_18.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc11_18.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc11_18.3: type = converted %.loc11_18.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: } -// CHECK:STDOUT: %value: %empty_tuple.type = wrapper_binding value, %value.param -// CHECK:STDOUT: %reference.param: ref %empty_tuple.type = ref_param call_param1 -// CHECK:STDOUT: %.loc11_37.1: type = splice_block %.loc11_37.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc11_37.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc11_37.3: type = converted %.loc11_37.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: } -// CHECK:STDOUT: %reference: ref %empty_tuple.type = wrapper_binding reference, %reference.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %MakeThreeFields.decl: %MakeThreeFields.type = fn_decl @MakeThreeFields [concrete = constants.%MakeThreeFields] { -// CHECK:STDOUT: %return.param_patt: %pattern_type.777 = out_param_pattern [concrete = constants.%return.param_patt.789] -// CHECK:STDOUT: %return.patt: %pattern_type.777 = return_slot_pattern %return.param_patt, %.loc65_39.2 [concrete = constants.%return.patt.e16] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %i32.loc65_26: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %i32.loc65_31: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %i32.loc65_36: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc65_39.1: %tuple.type.ff9 = tuple_literal (%i32.loc65_26, %i32.loc65_31, %i32.loc65_36) [concrete = constants.%tuple.04d] -// CHECK:STDOUT: %.loc65_39.2: type = converted %.loc65_39.1, constants.%tuple.type.555 [concrete = constants.%tuple.type.555] -// CHECK:STDOUT: %.loc65_39.3: Core.Form = init_form %.loc65_39.2 [concrete = constants.%.718] -// CHECK:STDOUT: %return.param: ref %tuple.type.555 = out_param call_param0 -// CHECK:STDOUT: %return: ref %tuple.type.555 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %ThreeFields.decl: %ThreeFields.type = fn_decl @ThreeFields.loc67 [concrete = constants.%ThreeFields.16d] { -// CHECK:STDOUT: %value.param_patt: %pattern_type.777 = value_param_pattern [concrete = constants.%value.param_patt.9bf] -// CHECK:STDOUT: %value.patt: %pattern_type.777 = at_binding_pattern value, %value.param_patt [concrete = constants.%value.patt.0a5] -// CHECK:STDOUT: %reference.param_patt: %pattern_type.777 = ref_param_pattern [concrete = constants.%reference.param_patt.795] -// CHECK:STDOUT: %reference.patt: %pattern_type.777 = at_binding_pattern reference, %reference.param_patt [concrete = constants.%reference.patt.f1c] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %value.param: %tuple.type.555 = value_param call_param0 -// CHECK:STDOUT: %.loc67_37.1: type = splice_block %.loc67_37.3 [concrete = constants.%tuple.type.555] { -// CHECK:STDOUT: %i32.loc67_24: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %i32.loc67_29: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %i32.loc67_34: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc67_37.2: %tuple.type.ff9 = tuple_literal (%i32.loc67_24, %i32.loc67_29, %i32.loc67_34) [concrete = constants.%tuple.04d] -// CHECK:STDOUT: %.loc67_37.3: type = converted %.loc67_37.2, constants.%tuple.type.555 [concrete = constants.%tuple.type.555] -// CHECK:STDOUT: } -// CHECK:STDOUT: %value: %tuple.type.555 = wrapper_binding value, %value.param -// CHECK:STDOUT: %reference.param: ref %tuple.type.555 = ref_param call_param1 -// CHECK:STDOUT: %.loc67_69.1: type = splice_block %.loc67_69.3 [concrete = constants.%tuple.type.555] { -// CHECK:STDOUT: %i32.loc67_56: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %i32.loc67_61: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %i32.loc67_66: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.loc67_69.2: %tuple.type.ff9 = tuple_literal (%i32.loc67_56, %i32.loc67_61, %i32.loc67_66) [concrete = constants.%tuple.04d] -// CHECK:STDOUT: %.loc67_69.3: type = converted %.loc67_69.2, constants.%tuple.type.555 [concrete = constants.%tuple.type.555] -// CHECK:STDOUT: } -// CHECK:STDOUT: %reference: ref %tuple.type.555 = wrapper_binding reference, %reference.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @NoFields { -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @ThreeFields.1 { -// CHECK:STDOUT: %int_32.1: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.1: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %i32.2: type = type_literal %i32.1 [concrete = constants.%i32] -// CHECK:STDOUT: %.1: %ThreeFields.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %int_32.2: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.3: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %i32.4: type = type_literal %i32.3 [concrete = constants.%i32] -// CHECK:STDOUT: %.2: %ThreeFields.elem = field_decl b, element1 [concrete] -// CHECK:STDOUT: %int_32.3: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.5: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %i32.6: type = type_literal %i32.5 [concrete = constants.%i32] -// CHECK:STDOUT: %.3: %ThreeFields.elem = field_decl c, element2 [concrete] -// CHECK:STDOUT: %.4: type = custom_layout_type {size=12, align=4, .a@0: %i32, .b@4: %i32, .c@8: %i32} [concrete = constants.%.8e5] -// CHECK:STDOUT: %complete_type: = complete_type_witness %.4 [concrete = constants.%complete_type.7b4] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @MakeEmpty() -> out %return.param: %empty_tuple.type; -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Empty(%value.param: %empty_tuple.type, %reference.param: ref %empty_tuple.type) { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref.loc23: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassNoFields.ref.loc23: %PassNoFields.cpp_overload_set.type = name_ref PassNoFields, imports.%PassNoFields.cpp_overload_set.value [concrete = constants.%PassNoFields.cpp_overload_set.value] -// CHECK:STDOUT: %.loc23_21.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc23_21.2: %NoFields = converted %.loc23_21.1, [concrete = ] -// CHECK:STDOUT: %addr.loc23: %ptr.027 = addr_of [concrete = ] -// CHECK:STDOUT: %PassNoFields__carbon_thunk.call.loc23: init %empty_tuple.type = call imports.%PassNoFields__carbon_thunk.decl(%addr.loc23) -// CHECK:STDOUT: %Cpp.ref.loc36: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassNoFields.ref.loc36: %PassNoFields.cpp_overload_set.type = name_ref PassNoFields, imports.%PassNoFields.cpp_overload_set.value [concrete = constants.%PassNoFields.cpp_overload_set.value] -// CHECK:STDOUT: %value.ref: %empty_tuple.type = name_ref value, %value -// CHECK:STDOUT: %.loc36: %NoFields = converted %value.ref, [concrete = ] -// CHECK:STDOUT: %addr.loc36: %ptr.027 = addr_of [concrete = ] -// CHECK:STDOUT: %PassNoFields__carbon_thunk.call.loc36: init %empty_tuple.type = call imports.%PassNoFields__carbon_thunk.decl(%addr.loc36) -// CHECK:STDOUT: %Cpp.ref.loc49: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassNoFields.ref.loc49: %PassNoFields.cpp_overload_set.type = name_ref PassNoFields, imports.%PassNoFields.cpp_overload_set.value [concrete = constants.%PassNoFields.cpp_overload_set.value] -// CHECK:STDOUT: %reference.ref: ref %empty_tuple.type = name_ref reference, %reference -// CHECK:STDOUT: %.loc49: %NoFields = converted %reference.ref, [concrete = ] -// CHECK:STDOUT: %addr.loc49: %ptr.027 = addr_of [concrete = ] -// CHECK:STDOUT: %PassNoFields__carbon_thunk.call.loc49: init %empty_tuple.type = call imports.%PassNoFields__carbon_thunk.decl(%addr.loc49) -// CHECK:STDOUT: %Cpp.ref.loc62: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassNoFields.ref.loc62: %PassNoFields.cpp_overload_set.type = name_ref PassNoFields, imports.%PassNoFields.cpp_overload_set.value [concrete = constants.%PassNoFields.cpp_overload_set.value] -// CHECK:STDOUT: %MakeEmpty.ref: %MakeEmpty.type = name_ref MakeEmpty, file.%MakeEmpty.decl [concrete = constants.%MakeEmpty] -// CHECK:STDOUT: %MakeEmpty.call: init %empty_tuple.type = call %MakeEmpty.ref() -// CHECK:STDOUT: %.loc62: %NoFields = converted %MakeEmpty.call, [concrete = ] -// CHECK:STDOUT: %addr.loc62: %ptr.027 = addr_of [concrete = ] -// CHECK:STDOUT: %PassNoFields__carbon_thunk.call.loc62: init %empty_tuple.type = call imports.%PassNoFields__carbon_thunk.decl(%addr.loc62) -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @PassNoFields(%s.param: %NoFields); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @PassNoFields__carbon_thunk(%s.param: %ptr.027); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @MakeThreeFields() -> out %return.param: %tuple.type.555; -// CHECK:STDOUT: -// CHECK:STDOUT: fn @ThreeFields.loc67(%value.param: %tuple.type.555, %reference.param: ref %tuple.type.555) { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref.loc79: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassThreeFields.ref.loc79: %PassThreeFields.cpp_overload_set.type = name_ref PassThreeFields, imports.%PassThreeFields.cpp_overload_set.value [concrete = constants.%PassThreeFields.cpp_overload_set.value] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] -// CHECK:STDOUT: %.loc79_31.1: %tuple.type.37f = tuple_literal (%int_1, %int_2, %int_3) [concrete = constants.%tuple.2d5] -// CHECK:STDOUT: %.loc79_31.2: %ThreeFields.1b4 = converted %.loc79_31.1, [concrete = ] -// CHECK:STDOUT: %addr.loc79: %ptr.6c3 = addr_of [concrete = ] -// CHECK:STDOUT: %PassThreeFields__carbon_thunk.call.loc79: init %empty_tuple.type = call imports.%PassThreeFields__carbon_thunk.decl(%addr.loc79) -// CHECK:STDOUT: %Cpp.ref.loc92: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassThreeFields.ref.loc92: %PassThreeFields.cpp_overload_set.type = name_ref PassThreeFields, imports.%PassThreeFields.cpp_overload_set.value [concrete = constants.%PassThreeFields.cpp_overload_set.value] -// CHECK:STDOUT: %value.ref: %tuple.type.555 = name_ref value, %value -// CHECK:STDOUT: %.loc92: %ThreeFields.1b4 = converted %value.ref, [concrete = ] -// CHECK:STDOUT: %addr.loc92: %ptr.6c3 = addr_of [concrete = ] -// CHECK:STDOUT: %PassThreeFields__carbon_thunk.call.loc92: init %empty_tuple.type = call imports.%PassThreeFields__carbon_thunk.decl(%addr.loc92) -// CHECK:STDOUT: %Cpp.ref.loc105: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassThreeFields.ref.loc105: %PassThreeFields.cpp_overload_set.type = name_ref PassThreeFields, imports.%PassThreeFields.cpp_overload_set.value [concrete = constants.%PassThreeFields.cpp_overload_set.value] -// CHECK:STDOUT: %reference.ref: ref %tuple.type.555 = name_ref reference, %reference -// CHECK:STDOUT: %.loc105: %ThreeFields.1b4 = converted %reference.ref, [concrete = ] -// CHECK:STDOUT: %addr.loc105: %ptr.6c3 = addr_of [concrete = ] -// CHECK:STDOUT: %PassThreeFields__carbon_thunk.call.loc105: init %empty_tuple.type = call imports.%PassThreeFields__carbon_thunk.decl(%addr.loc105) -// CHECK:STDOUT: %Cpp.ref.loc118: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassThreeFields.ref.loc118: %PassThreeFields.cpp_overload_set.type = name_ref PassThreeFields, imports.%PassThreeFields.cpp_overload_set.value [concrete = constants.%PassThreeFields.cpp_overload_set.value] -// CHECK:STDOUT: %MakeThreeFields.ref: %MakeThreeFields.type = name_ref MakeThreeFields, file.%MakeThreeFields.decl [concrete = constants.%MakeThreeFields] -// CHECK:STDOUT: %.loc118_39.1: ref %tuple.type.555 = temporary_storage -// CHECK:STDOUT: %MakeThreeFields.call: init %tuple.type.555 to %.loc118_39.1 = call %MakeThreeFields.ref() -// CHECK:STDOUT: %.loc118_39.2: %ThreeFields.1b4 = converted %MakeThreeFields.call, [concrete = ] -// CHECK:STDOUT: %addr.loc118: %ptr.6c3 = addr_of [concrete = ] -// CHECK:STDOUT: %PassThreeFields__carbon_thunk.call.loc118: init %empty_tuple.type = call imports.%PassThreeFields__carbon_thunk.decl(%addr.loc118) -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @PassThreeFields(%t.param: %ThreeFields.1b4); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @PassThreeFields__carbon_thunk(%t.param: %ptr.6c3); -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_int_from_struct.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %PassInt.cpp_overload_set.type: type = cpp_overload_set_type @PassInt.cpp_overload_set [concrete] -// CHECK:STDOUT: %PassInt.cpp_overload_set.value: %PassInt.cpp_overload_set.type = cpp_overload_set_value @PassInt.cpp_overload_set [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete] -// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete] -// CHECK:STDOUT: %PassInt.type: type = fn_type @PassInt [concrete] -// CHECK:STDOUT: %PassInt: %PassInt.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .PassInt = %PassInt.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %PassInt.cpp_overload_set.value: %PassInt.cpp_overload_set.type = cpp_overload_set_value @PassInt.cpp_overload_set [concrete = constants.%PassInt.cpp_overload_set.value] -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %PassInt.decl: %PassInt.type = fn_decl @PassInt [concrete = constants.%PassInt] { -// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%n.param_patt] -// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete = constants.%n.patt] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %n.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.1: type = splice_block %i32.2 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.1: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %i32.2: type = type_literal %i32.1 [concrete = constants.%i32] -// CHECK:STDOUT: } -// CHECK:STDOUT: %n: %i32 = wrapper_binding n, %n.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "int_from_struct.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref.loc20: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassInt.ref.loc20: %PassInt.cpp_overload_set.type = name_ref PassInt, imports.%PassInt.cpp_overload_set.value [concrete = constants.%PassInt.cpp_overload_set.value] -// CHECK:STDOUT: %.loc20_16.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc20_16.2: %i32 = converted %.loc20_16.1, [concrete = ] -// CHECK:STDOUT: %PassInt.call.loc20: init %empty_tuple.type = call imports.%PassInt.decl() -// CHECK:STDOUT: %Cpp.ref.loc33: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassInt.ref.loc33: %PassInt.cpp_overload_set.type = name_ref PassInt, imports.%PassInt.cpp_overload_set.value [concrete = constants.%PassInt.cpp_overload_set.value] -// CHECK:STDOUT: %.loc33_16.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc33_16.2: %i32 = converted %.loc33_16.1, [concrete = ] -// CHECK:STDOUT: %PassInt.call.loc33: init %empty_tuple.type = call imports.%PassInt.decl() -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @PassInt(%n.param: %i32); -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_int_from_struct_overloaded.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %PassOverloaded.cpp_overload_set.type: type = cpp_overload_set_type @PassOverloaded.cpp_overload_set [concrete] -// CHECK:STDOUT: %PassOverloaded.cpp_overload_set.value: %PassOverloaded.cpp_overload_set.type = cpp_overload_set_value @PassOverloaded.cpp_overload_set [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete] -// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete] -// CHECK:STDOUT: %PassOverloaded.type: type = fn_type @PassOverloaded [concrete] -// CHECK:STDOUT: %PassOverloaded: %PassOverloaded.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .PassOverloaded = %PassOverloaded.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %PassOverloaded.cpp_overload_set.value: %PassOverloaded.cpp_overload_set.type = cpp_overload_set_value @PassOverloaded.cpp_overload_set [concrete = constants.%PassOverloaded.cpp_overload_set.value] -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %PassOverloaded.decl: %PassOverloaded.type = fn_decl @PassOverloaded [concrete = constants.%PassOverloaded] { -// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%n.param_patt] -// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete = constants.%n.patt] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %n.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.1: type = splice_block %i32.2 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.1: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %i32.2: type = type_literal %i32.1 [concrete = constants.%i32] -// CHECK:STDOUT: } -// CHECK:STDOUT: %n: %i32 = wrapper_binding n, %n.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "int_from_struct.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref.loc21: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassOverloaded.ref.loc21: %PassOverloaded.cpp_overload_set.type = name_ref PassOverloaded, imports.%PassOverloaded.cpp_overload_set.value [concrete = constants.%PassOverloaded.cpp_overload_set.value] -// CHECK:STDOUT: %.loc21_23.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc21_23.2: %i32 = converted %.loc21_23.1, [concrete = ] -// CHECK:STDOUT: %PassOverloaded.call.loc21: init %empty_tuple.type = call imports.%PassOverloaded.decl() -// CHECK:STDOUT: %Cpp.ref.loc34: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %PassOverloaded.ref.loc34: %PassOverloaded.cpp_overload_set.type = name_ref PassOverloaded, imports.%PassOverloaded.cpp_overload_set.value [concrete = constants.%PassOverloaded.cpp_overload_set.value] -// CHECK:STDOUT: %.loc34_23.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc34_23.2: %i32 = converted %.loc34_23.1, [concrete = ] -// CHECK:STDOUT: %PassOverloaded.call.loc34: init %empty_tuple.type = call imports.%PassOverloaded.decl() -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @PassOverloaded(%n.param: %i32); -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_pass_nested_structs_inner_field_mismatch.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %TakeB.cpp_overload_set.type: type = cpp_overload_set_type @TakeB.cpp_overload_set [concrete] -// CHECK:STDOUT: %TakeB.cpp_overload_set.value: %TakeB.cpp_overload_set.type = cpp_overload_set_value @TakeB.cpp_overload_set [concrete] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %struct_type.x.z: type = struct_type {.x: Core.IntLiteral, .z: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %struct.c50: %struct_type.x.z = struct_value (%int_1, %int_2) [concrete] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] -// CHECK:STDOUT: %struct_type.a.n: type = struct_type {.a: %struct_type.x.z, .n: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %struct.7ea: %struct_type.a.n = struct_value (%struct.c50, %int_3) [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .TakeB = %TakeB.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %TakeB.cpp_overload_set.value: %TakeB.cpp_overload_set.type = cpp_overload_set_value @TakeB.cpp_overload_set [concrete = constants.%TakeB.cpp_overload_set.value] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "nested_structs.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %TakeB.ref: %TakeB.cpp_overload_set.type = name_ref TakeB, imports.%TakeB.cpp_overload_set.value [concrete = constants.%TakeB.cpp_overload_set.value] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] -// CHECK:STDOUT: %.loc15_34: %struct_type.x.z = struct_literal (%int_1, %int_2) [concrete = constants.%struct.c50] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] -// CHECK:STDOUT: %.loc15_43: %struct_type.a.n = struct_literal (%.loc15_34, %int_3) [concrete = constants.%struct.7ea] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_todo_pass_nested_structs.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %TakeB.cpp_overload_set.type: type = cpp_overload_set_type @TakeB.cpp_overload_set [concrete] -// CHECK:STDOUT: %TakeB.cpp_overload_set.value: %TakeB.cpp_overload_set.type = cpp_overload_set_value @TakeB.cpp_overload_set [concrete] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: Core.IntLiteral, .y: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %struct.004: %struct_type.x.y = struct_value (%int_1, %int_2) [concrete] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] -// CHECK:STDOUT: %struct_type.a.n.988: type = struct_type {.a: %struct_type.x.y, .n: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %struct.516: %struct_type.a.n.988 = struct_value (%struct.004, %int_3) [concrete] -// CHECK:STDOUT: %B: type = class_type @B [concrete] -// CHECK:STDOUT: %ptr.dc0: type = ptr_type %B [concrete] -// CHECK:STDOUT: %pattern_type.733: type = pattern_type %ptr.dc0 [concrete] -// CHECK:STDOUT: %_.param_patt.710: %pattern_type.733 = value_param_pattern [concrete] -// CHECK:STDOUT: %_.patt.025: %pattern_type.733 = at_binding_pattern _, %_.param_patt.710 [concrete] -// CHECK:STDOUT: %TakeB__carbon_thunk.type: type = fn_type @TakeB__carbon_thunk [concrete] -// CHECK:STDOUT: %TakeB__carbon_thunk: %TakeB__carbon_thunk.type = struct_value () [concrete] -// CHECK:STDOUT: %A: type = class_type @A [concrete] -// CHECK:STDOUT: %B.elem.75f: type = unbound_element_type %B, %A [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %B.elem.f76: type = unbound_element_type %B, %i32 [concrete] -// CHECK:STDOUT: %.89b: type = custom_layout_type {size=12, align=4, .a@0: %A, .n@8: %i32} [concrete] -// CHECK:STDOUT: %complete_type.73f: = complete_type_witness %.89b [concrete] -// CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %i32 [concrete] -// CHECK:STDOUT: %.850: type = custom_layout_type {size=8, align=4, .x@0: %i32, .y@4: %i32} [concrete] -// CHECK:STDOUT: %complete_type.32d: = complete_type_witness %.850 [concrete] -// CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .TakeB = %TakeB.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %TakeB.cpp_overload_set.value: %TakeB.cpp_overload_set.type = cpp_overload_set_value @TakeB.cpp_overload_set [concrete = constants.%TakeB.cpp_overload_set.value] -// CHECK:STDOUT: %TakeB__carbon_thunk.decl: %TakeB__carbon_thunk.type = fn_decl @TakeB__carbon_thunk [concrete = constants.%TakeB__carbon_thunk] { -// CHECK:STDOUT: %_.param_patt: %pattern_type.733 = value_param_pattern [concrete = constants.%_.param_patt.710] -// CHECK:STDOUT: %_.patt: %pattern_type.733 = at_binding_pattern _, %_.param_patt [concrete = constants.%_.patt.025] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %_.param: %ptr.dc0 = value_param call_param0 -// CHECK:STDOUT: %_: %ptr.dc0 = wrapper_binding _, %_.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "nested_structs.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @B { -// CHECK:STDOUT: %.1: %B.elem.75f = field_decl a, element0 [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.1: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %i32.2: type = type_literal %i32.1 [concrete = constants.%i32] -// CHECK:STDOUT: %.2: %B.elem.f76 = field_decl n, element1 [concrete] -// CHECK:STDOUT: %.3: type = custom_layout_type {size=12, align=4, .a@0: %A, .n@8: %i32} [concrete = constants.%.89b] -// CHECK:STDOUT: %complete_type: = complete_type_witness %.3 [concrete = constants.%complete_type.73f] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @A { -// CHECK:STDOUT: %int_32.1: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.1: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %i32.2: type = type_literal %i32.1 [concrete = constants.%i32] -// CHECK:STDOUT: %.1: %A.elem = field_decl x, element0 [concrete] -// CHECK:STDOUT: %int_32.2: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.3: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %i32.4: type = type_literal %i32.3 [concrete = constants.%i32] -// CHECK:STDOUT: %.2: %A.elem = field_decl y, element1 [concrete] -// CHECK:STDOUT: %.3: type = custom_layout_type {size=8, align=4, .x@0: %i32, .y@4: %i32} [concrete = constants.%.850] -// CHECK:STDOUT: %complete_type: = complete_type_witness %.3 [concrete = constants.%complete_type.32d] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %TakeB.ref: %TakeB.cpp_overload_set.type = name_ref TakeB, imports.%TakeB.cpp_overload_set.value [concrete = constants.%TakeB.cpp_overload_set.value] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] -// CHECK:STDOUT: %.loc18_34: %struct_type.x.y = struct_literal (%int_1, %int_2) [concrete = constants.%struct.004] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] -// CHECK:STDOUT: %.loc18_43.1: %struct_type.a.n.988 = struct_literal (%.loc18_34, %int_3) [concrete = constants.%struct.516] -// CHECK:STDOUT: %.loc18_43.2: %B = converted %.loc18_43.1, [concrete = ] -// CHECK:STDOUT: %addr: %ptr.dc0 = addr_of [concrete = ] -// CHECK:STDOUT: %TakeB__carbon_thunk.call: init %empty_tuple.type = call imports.%TakeB__carbon_thunk.decl(%addr) -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @TakeB(%_.param: %B); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @TakeB__carbon_thunk(%_.param: %ptr.dc0); -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_import_upsizing_rejected.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i16: type = class_type @Int, @Int(%int_16) [concrete] -// CHECK:STDOUT: %As.type.116: type = generic_interface_type @As [concrete] -// CHECK:STDOUT: %As.generic: %As.type.116 = struct_value () [concrete] -// CHECK:STDOUT: %As.type.6f1: type = facet_type <@As, @As(%i16)> [concrete] -// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.c5d: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.6ee: %Core.IntLiteral.as.As.impl.Convert.type.c5d = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.820: = impl_witness imports.%As.impl_witness_table.1c5, @Core.IntLiteral.as.As.impl(%int_16) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.4b7: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_16) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.70c: %Core.IntLiteral.as.As.impl.Convert.type.4b7 = struct_value () [concrete] -// CHECK:STDOUT: %As.facet: %As.type.6f1 = facet_value Core.IntLiteral, (%As.impl_witness.820) [concrete] -// CHECK:STDOUT: %As.WithSelf.Convert.type.d73: type = fn_type @As.WithSelf.Convert, @As.WithSelf(%i16, %As.facet) [concrete] -// CHECK:STDOUT: %.6b5: type = fn_type_with_self_type %As.WithSelf.Convert.type.d73, %As.facet [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.70c [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.70c, @Core.IntLiteral.as.As.impl.Convert(%int_16) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] -// CHECK:STDOUT: %int_1.d17: %i16 = int_value 1 [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete] -// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete] -// CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] -// CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .As = %Core.As -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .foo = %foo.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.As: %As.type.116 = import_ref Core//prelude/parts/as, As, loaded [concrete = constants.%As.generic] -// CHECK:STDOUT: %Core.import_ref.64b: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.c5d) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.6ee)] -// CHECK:STDOUT: %As.impl_witness_table.1c5 = impl_witness_table (%Core.import_ref.64b), @Core.IntLiteral.as.As.impl [concrete] -// CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] { -// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt] -// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.1: type = splice_block %i32.2 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.1: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %i32.2: type = type_literal %i32.1 [concrete = constants.%i32] -// CHECK:STDOUT: } -// CHECK:STDOUT: %a: %i32 = wrapper_binding a, %a.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "upsizing_rejected.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %i16: type = type_literal constants.%i16 [concrete = constants.%i16] -// CHECK:STDOUT: %impl.elem0: %.6b5 = impl_witness_access constants.%As.impl_witness.820, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.70c] -// CHECK:STDOUT: %bound_method.loc18_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.As.impl.Convert(constants.%int_16) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc18_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i16 = call %bound_method.loc18_13.2(%int_1) [concrete = constants.%int_1.d17] -// CHECK:STDOUT: %.loc18_13.1: %i16 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.d17] -// CHECK:STDOUT: %.loc18_13.2: %i16 = converted %int_1, %.loc18_13.1 [concrete = constants.%int_1.d17] -// CHECK:STDOUT: %.loc18_13.3: %i32 = converted %.loc18_13.2, [concrete = ] -// CHECK:STDOUT: %foo.call: init %empty_tuple.type = call imports.%foo.decl() -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @foo(%a.param: %i32); -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_import_downsizing_rejected.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %As.type.116: type = generic_interface_type @As [concrete] -// CHECK:STDOUT: %As.generic: %As.type.116 = struct_value () [concrete] -// CHECK:STDOUT: %As.type.155: type = facet_type <@As, @As(%i32)> [concrete] -// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.c5d: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.6ee: %Core.IntLiteral.as.As.impl.Convert.type.c5d = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.03e: = impl_witness imports.%As.impl_witness_table.1c5, @Core.IntLiteral.as.As.impl(%int_32) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.e79: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_32) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.8a4: %Core.IntLiteral.as.As.impl.Convert.type.e79 = struct_value () [concrete] -// CHECK:STDOUT: %As.facet: %As.type.155 = facet_value Core.IntLiteral, (%As.impl_witness.03e) [concrete] -// CHECK:STDOUT: %As.WithSelf.Convert.type.8ea: type = fn_type @As.WithSelf.Convert, @As.WithSelf(%i32, %As.facet) [concrete] -// CHECK:STDOUT: %.fbc: type = fn_type_with_self_type %As.WithSelf.Convert.type.8ea, %As.facet [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.8a4 [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.8a4, @Core.IntLiteral.as.As.impl.Convert(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] -// CHECK:STDOUT: %int_1.0c6: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete] -// CHECK:STDOUT: %i16: type = class_type @Int, @Int(%int_16) [concrete] -// CHECK:STDOUT: %ptr: type = ptr_type %i16 [concrete] -// CHECK:STDOUT: %pattern_type.f71: type = pattern_type %ptr [concrete] -// CHECK:STDOUT: %a.param_patt.58a: %pattern_type.f71 = value_param_pattern [concrete] -// CHECK:STDOUT: %a.patt.da1: %pattern_type.f71 = at_binding_pattern a, %a.param_patt.58a [concrete] -// CHECK:STDOUT: %foo__carbon_thunk.type: type = fn_type @foo__carbon_thunk [concrete] -// CHECK:STDOUT: %foo__carbon_thunk: %foo__carbon_thunk.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .As = %Core.As -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .foo = %foo.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.As: %As.type.116 = import_ref Core//prelude/parts/as, As, loaded [concrete = constants.%As.generic] -// CHECK:STDOUT: %Core.import_ref.64b: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.c5d) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.6ee)] -// CHECK:STDOUT: %As.impl_witness_table.1c5 = impl_witness_table (%Core.import_ref.64b), @Core.IntLiteral.as.As.impl [concrete] -// CHECK:STDOUT: %foo__carbon_thunk.decl: %foo__carbon_thunk.type = fn_decl @foo__carbon_thunk [concrete = constants.%foo__carbon_thunk] { -// CHECK:STDOUT: %a.param_patt: %pattern_type.f71 = value_param_pattern [concrete = constants.%a.param_patt.58a] -// CHECK:STDOUT: %a.patt: %pattern_type.f71 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.da1] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %ptr = value_param call_param0 -// CHECK:STDOUT: %.1: type = splice_block constants.%ptr [concrete = constants.%ptr] { -// CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete = constants.%int_16] -// CHECK:STDOUT: %i16.1: type = class_type @Int, @Int(constants.%int_16) [concrete = constants.%i16] -// CHECK:STDOUT: %i16.2: type = type_literal %i16.1 [concrete = constants.%i16] -// CHECK:STDOUT: } -// CHECK:STDOUT: %a: %ptr = wrapper_binding a, %a.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "downsizing_rejected.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0: %.fbc = impl_witness_access constants.%As.impl_witness.03e, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.8a4] -// CHECK:STDOUT: %bound_method.loc18_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.As.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc18_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i32 = call %bound_method.loc18_13.2(%int_1) [concrete = constants.%int_1.0c6] -// CHECK:STDOUT: %.loc18_13.1: %i32 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.0c6] -// CHECK:STDOUT: %.loc18_13.2: %i32 = converted %int_1, %.loc18_13.1 [concrete = constants.%int_1.0c6] -// CHECK:STDOUT: %.loc18_13.3: %i16 = converted %.loc18_13.2, [concrete = ] -// CHECK:STDOUT: %addr: %ptr = addr_of [concrete = ] -// CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr) -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @foo(%a.param: %i16); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @foo__carbon_thunk(%a.param: %ptr); -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_import_no_viable_function.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i64: type = class_type @Int, @Int(%int_64) [concrete] -// CHECK:STDOUT: %As.type.116: type = generic_interface_type @As [concrete] -// CHECK:STDOUT: %As.generic: %As.type.116 = struct_value () [concrete] -// CHECK:STDOUT: %As.type.998: type = facet_type <@As, @As(%i64)> [concrete] -// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.c5d: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.6ee: %Core.IntLiteral.as.As.impl.Convert.type.c5d = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.2e1: = impl_witness imports.%As.impl_witness_table.1c5, @Core.IntLiteral.as.As.impl(%int_64) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.1a1: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_64) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.3d9: %Core.IntLiteral.as.As.impl.Convert.type.1a1 = struct_value () [concrete] -// CHECK:STDOUT: %As.facet: %As.type.998 = facet_value Core.IntLiteral, (%As.impl_witness.2e1) [concrete] -// CHECK:STDOUT: %As.WithSelf.Convert.type.2b4: type = fn_type @As.WithSelf.Convert, @As.WithSelf(%i64, %As.facet) [concrete] -// CHECK:STDOUT: %.01b: type = fn_type_with_self_type %As.WithSelf.Convert.type.2b4, %As.facet [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.3d9 [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.3d9, @Core.IntLiteral.as.As.impl.Convert(%int_64) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] -// CHECK:STDOUT: %int_1.d98: %i64 = int_value 1 [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .As = %Core.As -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .foo = %foo.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.As: %As.type.116 = import_ref Core//prelude/parts/as, As, loaded [concrete = constants.%As.generic] -// CHECK:STDOUT: %Core.import_ref.64b: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.c5d) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.6ee)] -// CHECK:STDOUT: %As.impl_witness_table.1c5 = impl_witness_table (%Core.import_ref.64b), @Core.IntLiteral.as.As.impl [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "no_viable_function.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %i64: type = type_literal constants.%i64 [concrete = constants.%i64] -// CHECK:STDOUT: %impl.elem0: %.01b = impl_witness_access constants.%As.impl_witness.2e1, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.3d9] -// CHECK:STDOUT: %bound_method.loc15_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.As.impl.Convert(constants.%int_64) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc15_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i64 = call %bound_method.loc15_13.2(%int_1) [concrete = constants.%int_1.d98] -// CHECK:STDOUT: %.loc15_13.1: %i64 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.d98] -// CHECK:STDOUT: %.loc15_13.2: %i64 = converted %int_1, %.loc15_13.1 [concrete = constants.%int_1.d98] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_import_ambiguous_overload.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i64: type = class_type @Int, @Int(%int_64) [concrete] -// CHECK:STDOUT: %As.type.116: type = generic_interface_type @As [concrete] -// CHECK:STDOUT: %As.generic: %As.type.116 = struct_value () [concrete] -// CHECK:STDOUT: %As.type.998: type = facet_type <@As, @As(%i64)> [concrete] -// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.c5d: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.6ee: %Core.IntLiteral.as.As.impl.Convert.type.c5d = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.2e1: = impl_witness imports.%As.impl_witness_table.1c5, @Core.IntLiteral.as.As.impl(%int_64) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.1a1: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_64) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.3d9: %Core.IntLiteral.as.As.impl.Convert.type.1a1 = struct_value () [concrete] -// CHECK:STDOUT: %As.facet: %As.type.998 = facet_value Core.IntLiteral, (%As.impl_witness.2e1) [concrete] -// CHECK:STDOUT: %As.WithSelf.Convert.type.2b4: type = fn_type @As.WithSelf.Convert, @As.WithSelf(%i64, %As.facet) [concrete] -// CHECK:STDOUT: %.01b: type = fn_type_with_self_type %As.WithSelf.Convert.type.2b4, %As.facet [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.3d9 [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.3d9, @Core.IntLiteral.as.As.impl.Convert(%int_64) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] -// CHECK:STDOUT: %int_1.d98: %i64 = int_value 1 [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .As = %Core.As -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .foo = %foo.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.As: %As.type.116 = import_ref Core//prelude/parts/as, As, loaded [concrete = constants.%As.generic] -// CHECK:STDOUT: %Core.import_ref.64b: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.c5d) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.6ee)] -// CHECK:STDOUT: %As.impl_witness_table.1c5 = impl_witness_table (%Core.import_ref.64b), @Core.IntLiteral.as.As.impl [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "ambiguous_overload.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %i64: type = type_literal constants.%i64 [concrete = constants.%i64] -// CHECK:STDOUT: %impl.elem0: %.01b = impl_witness_access constants.%As.impl_witness.2e1, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.3d9] -// CHECK:STDOUT: %bound_method.loc19_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.As.impl.Convert(constants.%int_64) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc19_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i64 = call %bound_method.loc19_13.2(%int_1) [concrete = constants.%int_1.d98] -// CHECK:STDOUT: %.loc19_13.1: %i64 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.d98] -// CHECK:STDOUT: %.loc19_13.2: %i64 = converted %int_1, %.loc19_13.1 [concrete = constants.%int_1.d98] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_import_deleted_function.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %As.type.116: type = generic_interface_type @As [concrete] -// CHECK:STDOUT: %As.generic: %As.type.116 = struct_value () [concrete] -// CHECK:STDOUT: %As.type.155: type = facet_type <@As, @As(%i32)> [concrete] -// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.c5d: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%To) [symbolic] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.6ee: %Core.IntLiteral.as.As.impl.Convert.type.c5d = struct_value () [symbolic] -// CHECK:STDOUT: %As.impl_witness.03e: = impl_witness imports.%As.impl_witness_table.1c5, @Core.IntLiteral.as.As.impl(%int_32) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.e79: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl(%int_32) [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.8a4: %Core.IntLiteral.as.As.impl.Convert.type.e79 = struct_value () [concrete] -// CHECK:STDOUT: %As.facet: %As.type.155 = facet_value Core.IntLiteral, (%As.impl_witness.03e) [concrete] -// CHECK:STDOUT: %As.WithSelf.Convert.type.8ea: type = fn_type @As.WithSelf.Convert, @As.WithSelf(%i32, %As.facet) [concrete] -// CHECK:STDOUT: %.fbc: type = fn_type_with_self_type %As.WithSelf.Convert.type.8ea, %As.facet [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.8a4 [concrete] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.8a4, @Core.IntLiteral.as.As.impl.Convert(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] -// CHECK:STDOUT: %int_1.0c6: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .As = %Core.As -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .foo = %foo.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.As: %As.type.116 = import_ref Core//prelude/parts/as, As, loaded [concrete = constants.%As.generic] -// CHECK:STDOUT: %Core.import_ref.64b: @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.c5d) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.As.impl.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.6ee)] -// CHECK:STDOUT: %As.impl_witness_table.1c5 = impl_witness_table (%Core.import_ref.64b), @Core.IntLiteral.as.As.impl [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp "deleted_function.h" -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %impl.elem0: %.fbc = impl_witness_access constants.%As.impl_witness.03e, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.8a4] -// CHECK:STDOUT: %bound_method.loc19_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.As.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc19_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i32 = call %bound_method.loc19_13.2(%int_1) [concrete = constants.%int_1.0c6] -// CHECK:STDOUT: %.loc19_13.1: %i32 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.0c6] -// CHECK:STDOUT: %.loc19_13.2: %i32 = converted %int_1, %.loc19_13.1 [concrete = constants.%int_1.0c6] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_missing_impl.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] -// CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic] -// CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %pattern_type.6cb: type = pattern_type %I.type [concrete] -// CHECK:STDOUT: %ValueT.patt: %pattern_type.6cb = symbolic_binding_pattern ValueT, 0 [symbolic] -// CHECK:STDOUT: %ValueT: %I.type = symbolic_binding ValueT, 0 [symbolic] -// CHECK:STDOUT: %ValueT.as_type: type = facet_access_type %ValueT [symbolic] -// CHECK:STDOUT: %pattern_type.b3a: type = pattern_type %ValueT.as_type [symbolic] -// CHECK:STDOUT: %value.patt: %pattern_type.b3a = symbolic_binding_pattern value, 1 [symbolic] -// CHECK:STDOUT: %value: %ValueT.as_type = symbolic_binding value, 1 [symbolic] -// CHECK:STDOUT: %EchoValue.type: type = fn_type @EchoValue [concrete] -// CHECK:STDOUT: %EchoValue: %EchoValue.type = struct_value () [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { -// CHECK:STDOUT: .foo = %foo.cpp_overload_set.value -// CHECK:STDOUT: import Cpp//... -// CHECK:STDOUT: } -// CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Cpp = imports.%Cpp -// CHECK:STDOUT: .I = %I.decl -// CHECK:STDOUT: .EchoValue = %EchoValue.decl -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { -// CHECK:STDOUT: import Cpp inline -// CHECK:STDOUT: } -// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} -// CHECK:STDOUT: %EchoValue.decl: %EchoValue.type = fn_decl @EchoValue [concrete = constants.%EchoValue] { -// CHECK:STDOUT: %ValueT.patt.loc10_20.1: %pattern_type.6cb = symbolic_binding_pattern ValueT, 0 [symbolic = %ValueT.patt.loc10_20.2 (constants.%ValueT.patt)] -// CHECK:STDOUT: %value.patt.loc10_45.1: @EchoValue.%pattern_type (%pattern_type.b3a) = symbolic_binding_pattern value, 1 [symbolic = %value.patt.loc10_45.2 (constants.%value.patt)] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc10_22: type = splice_block %I.ref [concrete = constants.%I.type] { -// CHECK:STDOUT: %.Self.frozen.loc10_20: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] -// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: } -// CHECK:STDOUT: %ValueT.loc10_20.2: %I.type = symbolic_binding ValueT, 0 [symbolic = %ValueT.loc10_20.1 (constants.%ValueT)] -// CHECK:STDOUT: %.loc10_47.1: type = splice_block %.loc10_47.2 [symbolic = %ValueT.as_type.loc10_47.1 (constants.%ValueT.as_type)] { -// CHECK:STDOUT: %.Self.frozen.loc10_45: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] -// CHECK:STDOUT: %ValueT.ref: %I.type = name_ref ValueT, %ValueT.loc10_20.2 [symbolic = %ValueT.loc10_20.1 (constants.%ValueT)] -// CHECK:STDOUT: %ValueT.as_type.loc10_47.2: type = facet_access_type %ValueT.ref [symbolic = %ValueT.as_type.loc10_47.1 (constants.%ValueT.as_type)] -// CHECK:STDOUT: %.loc10_47.2: type = converted %ValueT.ref, %ValueT.as_type.loc10_47.2 [symbolic = %ValueT.as_type.loc10_47.1 (constants.%ValueT.as_type)] -// CHECK:STDOUT: } -// CHECK:STDOUT: %value.loc10_45.2: @EchoValue.%ValueT.as_type.loc10_47.1 (%ValueT.as_type) = symbolic_binding value, 1 [symbolic = %value.loc10_45.1 (constants.%value)] -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: interface @I { -// CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %I.WithSelf.decl = interface_with_self_decl @I [concrete] -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = %Self -// CHECK:STDOUT: witness = () -// CHECK:STDOUT: -// CHECK:STDOUT: !requires: -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: generic fn @EchoValue(%ValueT.loc10_20.2: %I.type, %value.loc10_45.2: @EchoValue.%ValueT.as_type.loc10_47.1 (%ValueT.as_type)) { -// CHECK:STDOUT: %ValueT.patt.loc10_20.2: %pattern_type.6cb = symbolic_binding_pattern ValueT, 0 [symbolic = %ValueT.patt.loc10_20.2 (constants.%ValueT.patt)] -// CHECK:STDOUT: %ValueT.loc10_20.1: %I.type = symbolic_binding ValueT, 0 [symbolic = %ValueT.loc10_20.1 (constants.%ValueT)] -// CHECK:STDOUT: %ValueT.as_type.loc10_47.1: type = facet_access_type %ValueT.loc10_20.1 [symbolic = %ValueT.as_type.loc10_47.1 (constants.%ValueT.as_type)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %ValueT.as_type.loc10_47.1 [symbolic = %pattern_type (constants.%pattern_type.b3a)] -// CHECK:STDOUT: %value.patt.loc10_45.2: @EchoValue.%pattern_type (%pattern_type.b3a) = symbolic_binding_pattern value, 1 [symbolic = %value.patt.loc10_45.2 (constants.%value.patt)] -// CHECK:STDOUT: %value.loc10_45.1: @EchoValue.%ValueT.as_type.loc10_47.1 (%ValueT.as_type) = symbolic_binding value, 1 [symbolic = %value.loc10_45.1 (constants.%value)] -// CHECK:STDOUT: -// CHECK:STDOUT: !definition: -// CHECK:STDOUT: -// CHECK:STDOUT: fn() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %EchoValue.ref: %EchoValue.type = name_ref EchoValue, file.%EchoValue.decl [concrete = constants.%EchoValue] -// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] -// CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%Self) {} -// CHECK:STDOUT: -// CHECK:STDOUT: specific @EchoValue(constants.%ValueT, constants.%value) { -// CHECK:STDOUT: %ValueT.patt.loc10_20.2 => constants.%ValueT.patt -// CHECK:STDOUT: %ValueT.loc10_20.1 => constants.%ValueT -// CHECK:STDOUT: %ValueT.as_type.loc10_47.1 => constants.%ValueT.as_type -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.b3a -// CHECK:STDOUT: %value.patt.loc10_45.2 => constants.%value.patt -// CHECK:STDOUT: %value.loc10_45.1 => constants.%value -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/macros/macros.carbon b/toolchain/check/testdata/interop/cpp/macros/macros.carbon index 3712ffa1ace3..fc06d33e9ca9 100644 --- a/toolchain/check/testdata/interop/cpp/macros/macros.carbon +++ b/toolchain/check/testdata/interop/cpp/macros/macros.carbon @@ -3,6 +3,7 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // // INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon +// EXTRA-ARGS: --target=x86_64-linux-gnu // // AUTOUPDATE // TIP: To test this file alone, run: diff --git a/toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.darwin.carbon b/toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.darwin.carbon new file mode 100644 index 000000000000..07dfd39e2fa1 --- /dev/null +++ b/toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.darwin.carbon @@ -0,0 +1,4069 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon +// EXTRA-ARGS: --target=arm64-apple-darwin +// +// AUTOUPDATE +// TIP: To test this file alone, run: +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.darwin.carbon +// TIP: To dump output, run: +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.darwin.carbon + +// 64-bit Darwin is a bit unusual: it's an LP64 target but its `int64_t` is +// `long long`. So for type mapping purposes: +// +// - `int` <-> `i32` == `Core.Int(32)` (of course). +// - `long` <-> `Cpp.long` == `Core.CppCompat.Long64`. +// - `long long` <-> `Cpp.long_long` == `Core.Int(64)`. + +// --- long.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn F() { + //@dump-sem-ir-begin + let cpp_long: Cpp.long = 1; + let unused carbon_long: i64 = cpp_long; + + var unused a: array(f32, 1 as Cpp.long) = (1.0,); + //@dump-sem-ir-end +} + +// --- unsigned_long.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn F() { + //@dump-sem-ir-begin + let cpp_unsigned_long: Cpp.unsigned_long = 1; + let unused carbon_unsigned_long: u64 = cpp_unsigned_long; + + var unused a: array(f32, 1 as Cpp.unsigned_long) = (1.0,); + //@dump-sem-ir-end +} + +// --- long_long.carbon + +library "[[@TEST_NAME]]"; + +import Cpp inline +''' +class LongLongResult {}; +auto PassLongLong(long long x) -> LongLongResult; + +class LongResult {}; +auto PassLongLong(long x) -> LongResult; +'''; + +fn F() { + //@dump-sem-ir-begin + let cpp_long_long: Cpp.long_long = 1; + let unused cpp_long_long_result: Cpp.LongLongResult = Cpp.PassLongLong(cpp_long_long); + + let cpp_long: Cpp.long = 1; + let unused cpp_long_result: Cpp.LongResult = Cpp.PassLongLong(cpp_long); + + let carbon_i64: i64 = cpp_long_long; + let unused carbon_i64_result: Cpp.LongLongResult = Cpp.PassLongLong(carbon_i64); + + var unused a: array(f32, 1 as Cpp.long_long) = (1.0,); + //@dump-sem-ir-end +} + + +// --- fail_implicit_conversion_i64_to_long.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn F() { + let carbon_i64: i64 = 1; + // CHECK:STDERR: fail_implicit_conversion_i64_to_long.carbon:[[@LINE+7]]:35: error: cannot implicitly convert expression of type `i64` to `Cpp.long` [ConversionFailure] + // CHECK:STDERR: let unused cpp_long: Cpp.long = carbon_i64; + // CHECK:STDERR: ^~~~~~~~~~ + // CHECK:STDERR: fail_implicit_conversion_i64_to_long.carbon:[[@LINE+4]]:35: note: type `i64` does not implement interface `Core.ImplicitAs(Cpp.long)` [MissingImplInMemberAccessInContext] + // CHECK:STDERR: let unused cpp_long: Cpp.long = carbon_i64; + // CHECK:STDERR: ^~~~~~~~~~ + // CHECK:STDERR: + let unused cpp_long: Cpp.long = carbon_i64; +} + +// --- copy_long.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn CopyLongLong() { + //@dump-sem-ir-begin + var a: Cpp.long = 1; + var unused b: Cpp.long = a; + //@dump-sem-ir-end +} + +// --- comparisons_homogeneous_long.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn ComparisonsHomogeneousLong() { + //@dump-sem-ir-begin + let a: Cpp.long = 1; + let b: Cpp.long = 1; + a == b; + a != b; + a > b; + a < b; + a >= b; + a <= b; + //@dump-sem-ir-end +} + +// --- comparisons_heterogeneous_long_left_side.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn ComparisonsHeterogeneousLongLeftSide() { + let b: i64 = 1; + //@dump-sem-ir-begin + let a: Cpp.long = 1; + a == b; + a != b; + a > b; + a < b; + a >= b; + a <= b; + + a == 1; + a != 1; + a > 1; + a < 1; + a >= 1; + a <= 1; + //@dump-sem-ir-end +} + +// --- comparisons_heterogeneous_long_right_side.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn ComparisonsHeterogeneousLongRightSide() { + let b: i64 = 1; + //@dump-sem-ir-begin + let a: Cpp.long = 1; + b == a; + b != a; + b > a; + b < a; + b >= a; + b <= a; + + 1 == a; + 1 != a; + 1 > a; + 1 < a; + 1 >= a; + 1 <= a; + //@dump-sem-ir-end +} + +// --- comparisons_heterogeneous_long_and_i32.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn ComparisonsHeterogeneousLongAndI32() { + let a: Cpp.long = 1; + let b: i32 = 1; + a == b; + b == a; +} + +// --- comparisons_heterogeneous_long_and_i64.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn ComparisonsHeterogeneousLongAndI64() { + let a: Cpp.long = 1; + let b: i64 = 1; + a == b; + b == a; +} + +// --- fail_todo_comparisons_heterogeneous_long_and_i128.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn ComparisonsHeterogeneousLongAndI128() { + let a: Cpp.long = 1; + let b: i128 = 1; + // CHECK:STDERR: fail_todo_comparisons_heterogeneous_long_and_i128.carbon:[[@LINE+4]]:3: error: cannot access member of interface `Core.EqWith(i128)` in type `Cpp.long` that does not implement that interface [MissingImplInMemberAccess] + // CHECK:STDERR: a == b; + // CHECK:STDERR: ^~~~~~ + // CHECK:STDERR: + a == b; + // CHECK:STDERR: fail_todo_comparisons_heterogeneous_long_and_i128.carbon:[[@LINE+4]]:3: error: cannot access member of interface `Core.EqWith(Cpp.long)` in type `i128` that does not implement that interface [MissingImplInMemberAccess] + // CHECK:STDERR: b == a; + // CHECK:STDERR: ^~~~~~ + // CHECK:STDERR: + b == a; +} + +// --- arithmetic_homogeneous_long.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn AssertSameType[T: type](unused a: T, unused b: T) {} + +fn ArithmeticHomogeneousLong() { + let x: Cpp.long = 1; + let y: Cpp.long = 1; + + AssertSameType(-x, x); + AssertSameType(x + y, x); + AssertSameType(x - y, x); + AssertSameType(x * y, x); + AssertSameType(x / y, x); + AssertSameType(x % y, x); +} + +// --- arithmetic_heterogeneous_long_left_side.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn AssertSameType[T: type](unused a: T, unused b: T) {} + +fn ArithmeticHeterogeneousLongLeftSide() { + let b: i64 = 1; + let x: Cpp.long = 1; + + AssertSameType(x + b, b); + AssertSameType(x - b, b); + AssertSameType(x * b, b); + AssertSameType(x / b, b); + AssertSameType(x % b, b); + + AssertSameType(x + 1, x); + AssertSameType(x - 1, x); + AssertSameType(x * 1, x); + AssertSameType(x / 1, x); + AssertSameType(x % 1, x); +} + +// --- arithmetic_heterogeneous_long_right_side.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn AssertSameType[T: type](unused a: T, unused b: T) {} + +fn ArithmeticHeterogeneousLongRightSide() { + let b: i64 = 1; + let x: Cpp.long = 1; + AssertSameType(b + x, b); + AssertSameType(b - x, b); + AssertSameType(b * x, b); + AssertSameType(b / x, b); + AssertSameType(b % x, b); + + AssertSameType(1 + x, x); + AssertSameType(1 - x, x); + AssertSameType(1 * x, x); + AssertSameType(1 / x, x); + AssertSameType(1 % x, x); +} + +// --- arithmetic_heterogeneous_long_and_i32.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn AssertSameType[T: type](unused a: T, unused b: T) {} + +fn ArithmeticHeterogeneousLongAndI32() { + let x: Cpp.long = 1; + let y: i32 = 1; + AssertSameType(x + y, x); + + AssertSameType(y + x, x); +} + +// --- fail_todo_arithmetic_heterogeneous_long_and_i128.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn AssertSameType[T: type](unused a: T, unused b: T) {} + +fn ArithmeticHeterogeneousLongAndI128() { + let x: Cpp.long = 1; + let y: i128 = 1; + // CHECK:STDERR: fail_todo_arithmetic_heterogeneous_long_and_i128.carbon:[[@LINE+4]]:18: error: cannot access member of interface `Core.AddWith(i128)` in type `Cpp.long` that does not implement that interface [MissingImplInMemberAccess] + // CHECK:STDERR: AssertSameType(x + y, y); + // CHECK:STDERR: ^~~~~ + // CHECK:STDERR: + AssertSameType(x + y, y); + // CHECK:STDERR: fail_todo_arithmetic_heterogeneous_long_and_i128.carbon:[[@LINE+4]]:18: error: cannot access member of interface `Core.AddWith(Cpp.long)` in type `i128` that does not implement that interface [MissingImplInMemberAccess] + // CHECK:STDERR: AssertSameType(y + x, y); + // CHECK:STDERR: ^~~~~ + // CHECK:STDERR: + AssertSameType(y + x, y); +} + +// --- bitwise_homogeneous_long.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn AssertSameType[T: type](unused a: T, unused b: T) {} + +fn BitWiseHomogeneousLong() { + let a: Cpp.long = 1; + let b: Cpp.long = 1; + + AssertSameType(^a, a); + AssertSameType(a & b, a); + AssertSameType(a | b, a); + AssertSameType(a ^ b, a); + AssertSameType(a << b, a); + AssertSameType(a >> b, a); +} + +// --- bitwise_heterogeneous_long_left_side.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn AssertSameType[T: type](unused a: T, unused b: T) {} + +fn BitWiseHeterogeneousLongLeftSide() { + let b: i64 = 1; + let a: Cpp.long = 1; + + AssertSameType(a & b, b); + AssertSameType(a | b, b); + AssertSameType(a ^ b, b); + AssertSameType(a << b, b); + AssertSameType(a >> b, b); + + AssertSameType(a & 1, a); + AssertSameType(a | 1, a); + AssertSameType(a ^ 1, a); + AssertSameType(a << 1, a); + AssertSameType(a >> 1, a); +} + +// --- bitwise_heterogeneous_long_right_side.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn AssertSameType[T: type](unused a: T, unused b: T) {} + +fn BitWiseHeterogeneousLongRightSide() { + let b: i64 = 1; + let a: Cpp.long = 1; + + AssertSameType(b & a, b); + AssertSameType(b | a, b); + AssertSameType(b ^ a, b); + AssertSameType(b << a, b); + AssertSameType(b >> a, b); + + AssertSameType(1 & a, a); + AssertSameType(1 | a, a); + AssertSameType(1 ^ a, a); + AssertSameType(1 << a, a); + AssertSameType(1 >> a, a); +} + +// --- bitwise_heterogeneous_long_and_i32.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn AssertSameType[T: type](unused a: T, unused b: T) {} + +fn BitWiseHeterogeneousLongAndI32() { + let a: Cpp.long = 1; + let b: i32 = 1; + + AssertSameType(a & b, a); + AssertSameType(b & a, a); +} + +// --- fail_todo_bitwise_heterogeneous_long_and_i128.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn AssertSameType[T: type](unused a: T, unused b: T) {} + +fn BitWiseHeterogeneousLongAndI128() { + let a: Cpp.long = 1; + let b: i128 = 1; + + // CHECK:STDERR: fail_todo_bitwise_heterogeneous_long_and_i128.carbon:[[@LINE+4]]:18: error: cannot access member of interface `Core.BitAndWith(i128)` in type `Cpp.long` that does not implement that interface [MissingImplInMemberAccess] + // CHECK:STDERR: AssertSameType(a & b, b); + // CHECK:STDERR: ^~~~~ + // CHECK:STDERR: + AssertSameType(a & b, b); + // CHECK:STDERR: fail_todo_bitwise_heterogeneous_long_and_i128.carbon:[[@LINE+4]]:18: error: cannot access member of interface `Core.BitAndWith(Cpp.long)` in type `i128` that does not implement that interface [MissingImplInMemberAccess] + // CHECK:STDERR: AssertSameType(b & a, b); + // CHECK:STDERR: ^~~~~ + // CHECK:STDERR: + AssertSameType(b & a, b); +} + +// --- compound_assignment_homogeneous_long.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn CompoundAssignmentHomogeneousLong() { + //@dump-sem-ir-begin + var a: Cpp.long = 1; + var b: Cpp.long = 1; + + a += b; + a -= b; + a *= b; + a /= b; + a %= b; + + a &= b; + a |= b; + a ^= b; + a <<= b; + a >>= b; + //@dump-sem-ir-end +} + +// --- compound_assignment_hereogeneous_long_and_i64.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn CompoundAssignmentLongAndI64() { + var a: i64 = 1; + //@dump-sem-ir-begin + let b: Cpp.long = 1; + a += b; + a -= b; + a *= b; + a /= b; + a %= b; + + a &= b; + a |= b; + a ^= b; + a <<= b; + a >>= b; + //@dump-sem-ir-end +} + +// --- compound_assignment_heterogeneous_long_and_int_literal.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn CompoundAssignmentLongAndIntLiteral() { + //@dump-sem-ir-begin + var a: Cpp.long = 1; + a += 1; + //@dump-sem-ir-end +} + +// --- compound_assignment_heterogeneous_long_and_runtime_i64.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn CompoundAssignmentLongAndRuntimeI64() { + //@dump-sem-ir-begin + var a: i64 = 1; + let b: Cpp.long = 1; + a += b; + //@dump-sem-ir-end +} + +// --- compound_assignment_heterogeneous_long_and_i32.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn CompoundAssignmentHeterogeneousLongAndI32() { + var a: Cpp.long = 1; + a += (1 as i32); +} + +// --- fail_compound_assignment_heterogeneous_long_and_i64.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn CompoundAssignmentHeterogeneousLongAndI64() { + var a: Cpp.long = 1; + // CHECK:STDERR: fail_compound_assignment_heterogeneous_long_and_i64.carbon:[[@LINE+4]]:3: error: cannot access member of interface `Core.AddAssignWith(i64)` in type `Cpp.long` that does not implement that interface [MissingImplInMemberAccess] + // CHECK:STDERR: a += (1 as i64); + // CHECK:STDERR: ^~~~~~~~~~~~~~~ + // CHECK:STDERR: + a += (1 as i64); +} + +// --- increment_decrement_long.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn IncrementDecrementLong() { + //@dump-sem-ir-begin + var a: Cpp.long = 1; + ++a; + --a; + //@dump-sem-ir-end +} + +// --- unsigned_long_long.carbon + +library "[[@TEST_NAME]]"; + +import Cpp inline +''' +class ULongLongResult {}; +auto PassULongLong(unsigned long long x) -> ULongLongResult; + +class ULongResult {}; +auto PassULongLong(unsigned long x) -> ULongResult; +'''; + +fn F() { + //@dump-sem-ir-begin + let cpp_unsigned_long_long: Cpp.unsigned_long_long = 1; + let unused cpp_unsigned_long_long_result: Cpp.ULongLongResult = Cpp.PassULongLong(cpp_unsigned_long_long); + + let cpp_unsigned_long: Cpp.unsigned_long = 1; + let unused cpp_unsigned_long_result: Cpp.ULongResult = Cpp.PassULongLong(cpp_unsigned_long); + + let carbon_u64: u64 = 1; + let unused carbon_u64_result: Cpp.ULongLongResult = Cpp.PassULongLong(carbon_u64); + + var unused a: array(f32, 1 as Cpp.unsigned_long) = (1.0,); + //@dump-sem-ir-end +} + +// --- fail_pass_u64_to_ulong.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn F() { + let carbon_u64: u64 = 1; + + // For portability reasons, this is not allowed even though `u64` + // happens to fit in `unsigned long` on this target. + // CHECK:STDERR: fail_pass_u64_to_ulong.carbon:[[@LINE+7]]:53: error: cannot implicitly convert expression of type `u64` to `Cpp.unsigned_long` [ConversionFailure] + // CHECK:STDERR: let unused cpp_unsigned_long: Cpp.unsigned_long = carbon_u64; + // CHECK:STDERR: ^~~~~~~~~~ + // CHECK:STDERR: fail_pass_u64_to_ulong.carbon:[[@LINE+4]]:53: note: type `u64` does not implement interface `Core.ImplicitAs(Cpp.unsigned_long)` [MissingImplInMemberAccessInContext] + // CHECK:STDERR: let unused cpp_unsigned_long: Cpp.unsigned_long = carbon_u64; + // CHECK:STDERR: ^~~~~~~~~~ + // CHECK:STDERR: + let unused cpp_unsigned_long: Cpp.unsigned_long = carbon_u64; +} + +// --- copy_unsigned_long.carbon + +library "[[@TEST_NAME]]"; + +import Cpp; + +fn CopyUnsignedLong() { + //@dump-sem-ir-begin + var a: Cpp.unsigned_long = 1; + var unused b: Cpp.unsigned_long = a; + //@dump-sem-ir-end +} + + +// CHECK:STDOUT: --- long.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %Cpp.long: type = class_type @Long64 [concrete] +// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] +// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] +// CHECK:STDOUT: %i64: type = class_type @Int, @Int(%int_64) [concrete] +// CHECK:STDOUT: %pattern_type.ada: type = pattern_type %Cpp.long [concrete] +// CHECK:STDOUT: %cpp_long.patt: %pattern_type.ada = value_binding_pattern cpp_long [concrete] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.340: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long)> [concrete] +// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] +// CHECK:STDOUT: %ImplicitAs.type.221: type = facet_type <@ImplicitAs, @ImplicitAs(%i64)> [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.5a7: = impl_witness imports.%ImplicitAs.impl_witness_table.f73 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.210: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.5a7) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.562: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Cpp.long, %ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %.6dd: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.562, %ImplicitAs.facet.210 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce [concrete] +// CHECK:STDOUT: %int_1.33f: %Cpp.long = int_value 1 [concrete] +// CHECK:STDOUT: %pattern_type.f57: type = pattern_type %i64 [concrete] +// CHECK:STDOUT: %carbon_long.patt: %pattern_type.f57 = value_binding_pattern carbon_long [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.43c: = impl_witness imports.%ImplicitAs.impl_witness_table.a3a [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.c71: %ImplicitAs.type.221 = facet_value %Cpp.long, (%ImplicitAs.impl_witness.43c) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.294: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %.9e1: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.294, %ImplicitAs.facet.c71 [concrete] +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.type.ae6f4c.1: type = fn_type @Cpp.long.as.ImplicitAs.impl.Convert.1 [concrete] +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.3cefb0.1: %Cpp.long.as.ImplicitAs.impl.Convert.type.ae6f4c.1 = struct_value () [concrete] +// CHECK:STDOUT: %f32.c73: type = class_type @Float, @Float(%int_32) [concrete] +// CHECK:STDOUT: %As.type.c37: type = facet_type <@As, @As(%Cpp.long)> [concrete] +// CHECK:STDOUT: %As.impl_witness.e4e: = impl_witness imports.%As.impl_witness_table.e98 [concrete] +// CHECK:STDOUT: %As.facet: %As.type.c37 = facet_value Core.IntLiteral, (%As.impl_witness.e4e) [concrete] +// CHECK:STDOUT: %As.WithSelf.Convert.type.518: type = fn_type @As.WithSelf.Convert, @As.WithSelf(%Cpp.long, %As.facet) [concrete] +// CHECK:STDOUT: %.f4b: type = fn_type_with_self_type %As.WithSelf.Convert.type.518, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type: type = fn_type @Core.IntLiteral.as.As.impl.Convert [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert: %Core.IntLiteral.as.As.impl.Convert.type = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.79f: = impl_witness imports.%ImplicitAs.impl_witness_table.851 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.d18: %ImplicitAs.type.7cb = facet_value %Cpp.long, (%ImplicitAs.impl_witness.79f) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.29c: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(Core.IntLiteral, %ImplicitAs.facet.d18) [concrete] +// CHECK:STDOUT: %.1e3: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.29c, %ImplicitAs.facet.d18 [concrete] +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.type.ae6f4c.2: type = fn_type @Cpp.long.as.ImplicitAs.impl.Convert.2 [concrete] +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.3cefb0.2: %Cpp.long.as.ImplicitAs.impl.Convert.type.ae6f4c.2 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.33f, %Cpp.long.as.ImplicitAs.impl.Convert.3cefb0.2 [concrete] +// CHECK:STDOUT: %array_type: type = array_type %int_1.5b8, %f32.c73 [concrete] +// CHECK:STDOUT: %f32.9b3: type = float_type %int_32, f32 [concrete] +// CHECK:STDOUT: %pattern_type.18b: type = pattern_type %array_type [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.18b = ref_binding_pattern a [concrete] +// CHECK:STDOUT: %a.var_patt: %pattern_type.18b = var_pattern %a.patt [concrete] +// CHECK:STDOUT: %float.6da: Core.FloatLiteral = float_literal_value 10e-1 [concrete] +// CHECK:STDOUT: %tuple.type: type = tuple_type (Core.FloatLiteral) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%float.6da) [concrete] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.ed3: type = facet_type <@ImplicitAs, @ImplicitAs(%f32.c73)> [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.063: type = fn_type @Core.FloatLiteral.as.ImplicitAs.impl.Convert, @Core.FloatLiteral.as.ImplicitAs.impl(%N) [symbolic] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.d4f: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.063 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.303: = impl_witness imports.%ImplicitAs.impl_witness_table.393, @Core.FloatLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.a62: type = fn_type @Core.FloatLiteral.as.ImplicitAs.impl.Convert, @Core.FloatLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.b37: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.a62 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.65e: %ImplicitAs.type.ed3 = facet_value Core.FloatLiteral, (%ImplicitAs.impl_witness.303) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.2e4: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%f32.c73, %ImplicitAs.facet.65e) [concrete] +// CHECK:STDOUT: %.17b: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.2e4, %ImplicitAs.facet.65e [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %float.6da, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.b37 [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.FloatLiteral.as.ImplicitAs.impl.Convert.b37, @Core.FloatLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %float.6da, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] +// CHECK:STDOUT: %float.943: %f32.c73 = float_value 1 [concrete] +// CHECK:STDOUT: %array: %array_type = tuple_value (%float.943) [concrete] +// CHECK:STDOUT: %Destroy.Op.type.1d8f74.3: type = fn_type @Destroy.Op.loc11_3.3 [concrete] +// CHECK:STDOUT: %Destroy.Op.1a2547.3: %Destroy.Op.type.1d8f74.3 = struct_value () [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { +// CHECK:STDOUT: .long = constants.%Cpp.long +// CHECK:STDOUT: import Cpp//... +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import_ref.06c923.1: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.f73 = impl_witness_table (%Core.import_ref.06c923.1), @Core.IntLiteral.as.ImplicitAs.impl.71b [concrete] +// CHECK:STDOUT: %Core.import_ref.06c923.2: %Cpp.long.as.ImplicitAs.impl.Convert.type.ae6f4c.1 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert.3cefb0.1] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a3a = impl_witness_table (%Core.import_ref.06c923.2), @Cpp.long.as.ImplicitAs.impl.c8d [concrete] +// CHECK:STDOUT: %Core.import_ref.06c923.3: %Core.IntLiteral.as.As.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.As.impl.Convert] +// CHECK:STDOUT: %As.impl_witness_table.e98 = impl_witness_table (%Core.import_ref.06c923.3), @Core.IntLiteral.as.As.impl.ed4 [concrete] +// CHECK:STDOUT: %Core.import_ref.06c923.4: %Cpp.long.as.ImplicitAs.impl.Convert.type.ae6f4c.2 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert.3cefb0.2] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.851 = impl_witness_table (%Core.import_ref.06c923.4), @Cpp.long.as.ImplicitAs.impl.b7c [concrete] +// CHECK:STDOUT: %Core.import_ref.c4c: @Core.FloatLiteral.as.ImplicitAs.impl.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.type (%Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.063) = import_ref Core//prelude/types/float, loc{{\d+_\d+}}, loaded [symbolic = @Core.FloatLiteral.as.ImplicitAs.impl.%Core.FloatLiteral.as.ImplicitAs.impl.Convert (constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.d4f)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.393 = impl_witness_table (%Core.import_ref.c4c), @Core.FloatLiteral.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @F() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: %int_1.loc8: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc8: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc8: = bound_method %int_1.loc8, %impl.elem0.loc8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %Cpp.long = call %bound_method.loc8(%int_1.loc8) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc8_28.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc8_28.2: %Cpp.long = converted %int_1.loc8, %.loc8_28.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc8_20: type = splice_block %long.ref.loc8 [concrete = constants.%Cpp.long] { +// CHECK:STDOUT: %Cpp.ref.loc8: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %long.ref.loc8: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long] +// CHECK:STDOUT: } +// CHECK:STDOUT: %cpp_long: %Cpp.long = wrapper_binding cpp_long, %.loc8_28.2 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %cpp_long.patt: %pattern_type.ada = value_binding_pattern cpp_long [concrete = constants.%cpp_long.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %cpp_long.ref: %Cpp.long = name_ref cpp_long, %cpp_long +// CHECK:STDOUT: %impl.elem0.loc9: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert.3cefb0.1] +// CHECK:STDOUT: %bound_method.loc9: = bound_method %cpp_long.ref, %impl.elem0.loc9 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc9: init %i64 = call %bound_method.loc9(%cpp_long.ref) +// CHECK:STDOUT: %.loc9_33.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc9 +// CHECK:STDOUT: %.loc9_33.2: %i64 = converted %cpp_long.ref, %.loc9_33.1 +// CHECK:STDOUT: %i64: type = type_literal constants.%i64 [concrete = constants.%i64] +// CHECK:STDOUT: %carbon_long: %i64 = wrapper_binding carbon_long, %.loc9_33.2 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %carbon_long.patt: %pattern_type.f57 = value_binding_pattern carbon_long [concrete = constants.%carbon_long.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a.var: ref %array_type = var_storage %a.var_patt +// CHECK:STDOUT: %float: Core.FloatLiteral = float_literal_value 10e-1 [concrete = constants.%float.6da] +// CHECK:STDOUT: %.loc11_50.1: %tuple.type = tuple_literal (%float) [concrete = constants.%tuple] +// CHECK:STDOUT: %impl.elem0.loc11_50: %.17b = impl_witness_access constants.%ImplicitAs.impl_witness.303, element0 [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.b37] +// CHECK:STDOUT: %bound_method.loc11_50.1: = bound_method %float, %impl.elem0.loc11_50 [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc11_50, @Core.FloatLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc11_50.2: = bound_method %float, %specific_fn [concrete = constants.%bound_method] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.call: init %f32.c73 = call %bound_method.loc11_50.2(%float) [concrete = constants.%float.943] +// CHECK:STDOUT: %.loc11_50.2: init %f32.c73 = converted %float, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%float.943] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] +// CHECK:STDOUT: %.loc11_50.3: ref %f32.c73 = array_index %a.var, %int_0 +// CHECK:STDOUT: %.loc11_50.4: init %f32.c73 to %.loc11_50.3 = in_place_init %.loc11_50.2 [concrete = constants.%float.943] +// CHECK:STDOUT: %.loc11_50.5: init %array_type to %a.var = array_init (%.loc11_50.4) [concrete = constants.%array] +// CHECK:STDOUT: %.loc11_3: init %array_type = converted %.loc11_50.1, %.loc11_50.5 [concrete = constants.%array] +// CHECK:STDOUT: assign %a.var, %.loc11_3 +// CHECK:STDOUT: %.loc11_41: type = splice_block %array_type [concrete = constants.%array_type] { +// CHECK:STDOUT: %f32: type = type_literal constants.%f32.c73 [concrete = constants.%f32.c73] +// CHECK:STDOUT: %int_1.loc11: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %Cpp.ref.loc11: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %long.ref.loc11: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long] +// CHECK:STDOUT: %impl.elem0.loc11_30.1: %.f4b = impl_witness_access constants.%As.impl_witness.e4e, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert] +// CHECK:STDOUT: %bound_method.loc11_30.1: = bound_method %int_1.loc11, %impl.elem0.loc11_30.1 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %Cpp.long = call %bound_method.loc11_30.1(%int_1.loc11) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc11_30.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc11_30.2: %Cpp.long = converted %int_1.loc11, %.loc11_30.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %impl.elem0.loc11_30.2: %.1e3 = impl_witness_access constants.%ImplicitAs.impl_witness.79f, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert.3cefb0.2] +// CHECK:STDOUT: %bound_method.loc11_30.2: = bound_method %.loc11_30.2, %impl.elem0.loc11_30.2 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc11: init Core.IntLiteral = call %bound_method.loc11_30.2(%.loc11_30.2) [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc11_30.3: Core.IntLiteral = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc11 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc11_30.4: Core.IntLiteral = converted %.loc11_30.2, %.loc11_30.3 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %array_type: type = array_type %.loc11_30.4, %f32 [concrete = constants.%array_type] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a: ref %array_type = wrapper_binding a, %a.var +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %a.patt: %pattern_type.18b = ref_binding_pattern a [concrete = constants.%a.patt] +// CHECK:STDOUT: %a.var_patt: %pattern_type.18b = var_pattern %a.patt [concrete = constants.%a.var_patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %Destroy.Op.bound: = bound_method %a.var, constants.%Destroy.Op.1a2547.3 +// CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%a.var) +// CHECK:STDOUT: +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc11_3.1(%self.param: ref %f32.9b3) = "no_op"; +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc11_3.2(%self.param: ref %f32.c73) { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc11_3.3(%self.param: ref %array_type) { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- unsigned_long.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %Cpp.unsigned_long: type = class_type @ULong64 [concrete] +// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] +// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] +// CHECK:STDOUT: %u64: type = class_type @UInt, @UInt(%int_64) [concrete] +// CHECK:STDOUT: %pattern_type.172: type = pattern_type %Cpp.unsigned_long [concrete] +// CHECK:STDOUT: %cpp_unsigned_long.patt: %pattern_type.172 = value_binding_pattern cpp_unsigned_long [concrete] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.7da: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.unsigned_long)> [concrete] +// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] +// CHECK:STDOUT: %ImplicitAs.type.14f: type = facet_type <@ImplicitAs, @ImplicitAs(%u64)> [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.747: = impl_witness imports.%ImplicitAs.impl_witness_table.54e [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.dbc: %ImplicitAs.type.7da = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.747) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.57a: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Cpp.unsigned_long, %ImplicitAs.facet.dbc) [concrete] +// CHECK:STDOUT: %.869: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.57a, %ImplicitAs.facet.dbc [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce [concrete] +// CHECK:STDOUT: %int_1.9e8: %Cpp.unsigned_long = int_value 1 [concrete] +// CHECK:STDOUT: %pattern_type.b35: type = pattern_type %u64 [concrete] +// CHECK:STDOUT: %carbon_unsigned_long.patt: %pattern_type.b35 = value_binding_pattern carbon_unsigned_long [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.885: = impl_witness imports.%ImplicitAs.impl_witness_table.2eb [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.728: %ImplicitAs.type.14f = facet_value %Cpp.unsigned_long, (%ImplicitAs.impl_witness.885) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.798: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%u64, %ImplicitAs.facet.728) [concrete] +// CHECK:STDOUT: %.0ae: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.798, %ImplicitAs.facet.728 [concrete] +// CHECK:STDOUT: %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.type.ae6f4c.1: type = fn_type @Cpp.unsigned_long.as.ImplicitAs.impl.Convert.1 [concrete] +// CHECK:STDOUT: %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.3cefb0.1: %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.type.ae6f4c.1 = struct_value () [concrete] +// CHECK:STDOUT: %f32.c73: type = class_type @Float, @Float(%int_32) [concrete] +// CHECK:STDOUT: %As.type.68f: type = facet_type <@As, @As(%Cpp.unsigned_long)> [concrete] +// CHECK:STDOUT: %As.impl_witness.a83: = impl_witness imports.%As.impl_witness_table.fcb [concrete] +// CHECK:STDOUT: %As.facet: %As.type.68f = facet_value Core.IntLiteral, (%As.impl_witness.a83) [concrete] +// CHECK:STDOUT: %As.WithSelf.Convert.type.d43: type = fn_type @As.WithSelf.Convert, @As.WithSelf(%Cpp.unsigned_long, %As.facet) [concrete] +// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %As.WithSelf.Convert.type.d43, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type: type = fn_type @Core.IntLiteral.as.As.impl.Convert [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert: %Core.IntLiteral.as.As.impl.Convert.type = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.f9e: = impl_witness imports.%ImplicitAs.impl_witness_table.d48 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.020: %ImplicitAs.type.7cb = facet_value %Cpp.unsigned_long, (%ImplicitAs.impl_witness.f9e) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.a35: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(Core.IntLiteral, %ImplicitAs.facet.020) [concrete] +// CHECK:STDOUT: %.1d2: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.a35, %ImplicitAs.facet.020 [concrete] +// CHECK:STDOUT: %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.type.ae6f4c.2: type = fn_type @Cpp.unsigned_long.as.ImplicitAs.impl.Convert.2 [concrete] +// CHECK:STDOUT: %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.3cefb0.2: %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.type.ae6f4c.2 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.9e8, %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.3cefb0.2 [concrete] +// CHECK:STDOUT: %array_type: type = array_type %int_1.5b8, %f32.c73 [concrete] +// CHECK:STDOUT: %f32.9b3: type = float_type %int_32, f32 [concrete] +// CHECK:STDOUT: %pattern_type.18b: type = pattern_type %array_type [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.18b = ref_binding_pattern a [concrete] +// CHECK:STDOUT: %a.var_patt: %pattern_type.18b = var_pattern %a.patt [concrete] +// CHECK:STDOUT: %float.6da: Core.FloatLiteral = float_literal_value 10e-1 [concrete] +// CHECK:STDOUT: %tuple.type: type = tuple_type (Core.FloatLiteral) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%float.6da) [concrete] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.ed3: type = facet_type <@ImplicitAs, @ImplicitAs(%f32.c73)> [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.063: type = fn_type @Core.FloatLiteral.as.ImplicitAs.impl.Convert, @Core.FloatLiteral.as.ImplicitAs.impl(%N) [symbolic] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.d4f: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.063 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.303: = impl_witness imports.%ImplicitAs.impl_witness_table.393, @Core.FloatLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.a62: type = fn_type @Core.FloatLiteral.as.ImplicitAs.impl.Convert, @Core.FloatLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.b37: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.a62 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.65e: %ImplicitAs.type.ed3 = facet_value Core.FloatLiteral, (%ImplicitAs.impl_witness.303) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.2e4: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%f32.c73, %ImplicitAs.facet.65e) [concrete] +// CHECK:STDOUT: %.17b: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.2e4, %ImplicitAs.facet.65e [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %float.6da, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.b37 [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.FloatLiteral.as.ImplicitAs.impl.Convert.b37, @Core.FloatLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %float.6da, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] +// CHECK:STDOUT: %float.943: %f32.c73 = float_value 1 [concrete] +// CHECK:STDOUT: %array: %array_type = tuple_value (%float.943) [concrete] +// CHECK:STDOUT: %Destroy.Op.type.1d8f74.3: type = fn_type @Destroy.Op.loc11_3.3 [concrete] +// CHECK:STDOUT: %Destroy.Op.1a2547.3: %Destroy.Op.type.1d8f74.3 = struct_value () [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { +// CHECK:STDOUT: .unsigned_long = constants.%Cpp.unsigned_long +// CHECK:STDOUT: import Cpp//... +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import_ref.06c923.1: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.54e = impl_witness_table (%Core.import_ref.06c923.1), @Core.IntLiteral.as.ImplicitAs.impl.a49 [concrete] +// CHECK:STDOUT: %Core.import_ref.06c923.2: %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.type.ae6f4c.1 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.unsigned_long.as.ImplicitAs.impl.Convert.3cefb0.1] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.2eb = impl_witness_table (%Core.import_ref.06c923.2), @Cpp.unsigned_long.as.ImplicitAs.impl.c4b [concrete] +// CHECK:STDOUT: %Core.import_ref.06c923.3: %Core.IntLiteral.as.As.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.As.impl.Convert] +// CHECK:STDOUT: %As.impl_witness_table.fcb = impl_witness_table (%Core.import_ref.06c923.3), @Core.IntLiteral.as.As.impl.60e [concrete] +// CHECK:STDOUT: %Core.import_ref.06c923.4: %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.type.ae6f4c.2 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.unsigned_long.as.ImplicitAs.impl.Convert.3cefb0.2] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.d48 = impl_witness_table (%Core.import_ref.06c923.4), @Cpp.unsigned_long.as.ImplicitAs.impl.8de [concrete] +// CHECK:STDOUT: %Core.import_ref.c4c: @Core.FloatLiteral.as.ImplicitAs.impl.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.type (%Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.063) = import_ref Core//prelude/types/float, loc{{\d+_\d+}}, loaded [symbolic = @Core.FloatLiteral.as.ImplicitAs.impl.%Core.FloatLiteral.as.ImplicitAs.impl.Convert (constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.d4f)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.393 = impl_witness_table (%Core.import_ref.c4c), @Core.FloatLiteral.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @F() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: %int_1.loc8: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc8: %.869 = impl_witness_access constants.%ImplicitAs.impl_witness.747, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc8: = bound_method %int_1.loc8, %impl.elem0.loc8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %Cpp.unsigned_long = call %bound_method.loc8(%int_1.loc8) [concrete = constants.%int_1.9e8] +// CHECK:STDOUT: %.loc8_46.1: %Cpp.unsigned_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.9e8] +// CHECK:STDOUT: %.loc8_46.2: %Cpp.unsigned_long = converted %int_1.loc8, %.loc8_46.1 [concrete = constants.%int_1.9e8] +// CHECK:STDOUT: %.loc8_29: type = splice_block %unsigned_long.ref.loc8 [concrete = constants.%Cpp.unsigned_long] { +// CHECK:STDOUT: %Cpp.ref.loc8: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %unsigned_long.ref.loc8: type = name_ref unsigned_long, constants.%Cpp.unsigned_long [concrete = constants.%Cpp.unsigned_long] +// CHECK:STDOUT: } +// CHECK:STDOUT: %cpp_unsigned_long: %Cpp.unsigned_long = wrapper_binding cpp_unsigned_long, %.loc8_46.2 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %cpp_unsigned_long.patt: %pattern_type.172 = value_binding_pattern cpp_unsigned_long [concrete = constants.%cpp_unsigned_long.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %cpp_unsigned_long.ref: %Cpp.unsigned_long = name_ref cpp_unsigned_long, %cpp_unsigned_long +// CHECK:STDOUT: %impl.elem0.loc9: %.0ae = impl_witness_access constants.%ImplicitAs.impl_witness.885, element0 [concrete = constants.%Cpp.unsigned_long.as.ImplicitAs.impl.Convert.3cefb0.1] +// CHECK:STDOUT: %bound_method.loc9: = bound_method %cpp_unsigned_long.ref, %impl.elem0.loc9 +// CHECK:STDOUT: %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.call.loc9: init %u64 = call %bound_method.loc9(%cpp_unsigned_long.ref) +// CHECK:STDOUT: %.loc9_42.1: %u64 = value_of_initializer %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.call.loc9 +// CHECK:STDOUT: %.loc9_42.2: %u64 = converted %cpp_unsigned_long.ref, %.loc9_42.1 +// CHECK:STDOUT: %u64: type = type_literal constants.%u64 [concrete = constants.%u64] +// CHECK:STDOUT: %carbon_unsigned_long: %u64 = wrapper_binding carbon_unsigned_long, %.loc9_42.2 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %carbon_unsigned_long.patt: %pattern_type.b35 = value_binding_pattern carbon_unsigned_long [concrete = constants.%carbon_unsigned_long.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a.var: ref %array_type = var_storage %a.var_patt +// CHECK:STDOUT: %float: Core.FloatLiteral = float_literal_value 10e-1 [concrete = constants.%float.6da] +// CHECK:STDOUT: %.loc11_59.1: %tuple.type = tuple_literal (%float) [concrete = constants.%tuple] +// CHECK:STDOUT: %impl.elem0.loc11_59: %.17b = impl_witness_access constants.%ImplicitAs.impl_witness.303, element0 [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.b37] +// CHECK:STDOUT: %bound_method.loc11_59.1: = bound_method %float, %impl.elem0.loc11_59 [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc11_59, @Core.FloatLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc11_59.2: = bound_method %float, %specific_fn [concrete = constants.%bound_method] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.call: init %f32.c73 = call %bound_method.loc11_59.2(%float) [concrete = constants.%float.943] +// CHECK:STDOUT: %.loc11_59.2: init %f32.c73 = converted %float, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%float.943] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] +// CHECK:STDOUT: %.loc11_59.3: ref %f32.c73 = array_index %a.var, %int_0 +// CHECK:STDOUT: %.loc11_59.4: init %f32.c73 to %.loc11_59.3 = in_place_init %.loc11_59.2 [concrete = constants.%float.943] +// CHECK:STDOUT: %.loc11_59.5: init %array_type to %a.var = array_init (%.loc11_59.4) [concrete = constants.%array] +// CHECK:STDOUT: %.loc11_3: init %array_type = converted %.loc11_59.1, %.loc11_59.5 [concrete = constants.%array] +// CHECK:STDOUT: assign %a.var, %.loc11_3 +// CHECK:STDOUT: %.loc11_50: type = splice_block %array_type [concrete = constants.%array_type] { +// CHECK:STDOUT: %f32: type = type_literal constants.%f32.c73 [concrete = constants.%f32.c73] +// CHECK:STDOUT: %int_1.loc11: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %Cpp.ref.loc11: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %unsigned_long.ref.loc11: type = name_ref unsigned_long, constants.%Cpp.unsigned_long [concrete = constants.%Cpp.unsigned_long] +// CHECK:STDOUT: %impl.elem0.loc11_30.1: %.0ea = impl_witness_access constants.%As.impl_witness.a83, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert] +// CHECK:STDOUT: %bound_method.loc11_30.1: = bound_method %int_1.loc11, %impl.elem0.loc11_30.1 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %Cpp.unsigned_long = call %bound_method.loc11_30.1(%int_1.loc11) [concrete = constants.%int_1.9e8] +// CHECK:STDOUT: %.loc11_30.1: %Cpp.unsigned_long = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.9e8] +// CHECK:STDOUT: %.loc11_30.2: %Cpp.unsigned_long = converted %int_1.loc11, %.loc11_30.1 [concrete = constants.%int_1.9e8] +// CHECK:STDOUT: %impl.elem0.loc11_30.2: %.1d2 = impl_witness_access constants.%ImplicitAs.impl_witness.f9e, element0 [concrete = constants.%Cpp.unsigned_long.as.ImplicitAs.impl.Convert.3cefb0.2] +// CHECK:STDOUT: %bound_method.loc11_30.2: = bound_method %.loc11_30.2, %impl.elem0.loc11_30.2 [concrete = constants.%Cpp.unsigned_long.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.call.loc11: init Core.IntLiteral = call %bound_method.loc11_30.2(%.loc11_30.2) [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc11_30.3: Core.IntLiteral = value_of_initializer %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.call.loc11 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc11_30.4: Core.IntLiteral = converted %.loc11_30.2, %.loc11_30.3 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %array_type: type = array_type %.loc11_30.4, %f32 [concrete = constants.%array_type] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a: ref %array_type = wrapper_binding a, %a.var +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %a.patt: %pattern_type.18b = ref_binding_pattern a [concrete = constants.%a.patt] +// CHECK:STDOUT: %a.var_patt: %pattern_type.18b = var_pattern %a.patt [concrete = constants.%a.var_patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %Destroy.Op.bound: = bound_method %a.var, constants.%Destroy.Op.1a2547.3 +// CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%a.var) +// CHECK:STDOUT: +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc11_3.1(%self.param: ref %f32.9b3) = "no_op"; +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc11_3.2(%self.param: ref %f32.c73) { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc11_3.3(%self.param: ref %array_type) { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- long_long.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] +// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] +// CHECK:STDOUT: %i64: type = class_type @Int, @Int(%int_64) [concrete] +// CHECK:STDOUT: %pattern_type.f57: type = pattern_type %i64 [concrete] +// CHECK:STDOUT: %cpp_long_long.patt: %pattern_type.f57 = value_binding_pattern cpp_long_long [concrete] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.221: type = facet_type <@ImplicitAs, @ImplicitAs(%i64)> [concrete] +// CHECK:STDOUT: %To.fe9: Core.IntLiteral = symbolic_binding To, 0 [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1, @Core.IntLiteral.as.ImplicitAs.impl.0e9(%To.fe9) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.845: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74 = struct_value () [symbolic] +// CHECK:STDOUT: %From.fe9: Core.IntLiteral = symbolic_binding From, 0 [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.48d: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%From.fe9) [symbolic] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.0f9: %Int.as.ImplicitAs.impl.Convert.type.48d = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.091: = impl_witness imports.%ImplicitAs.impl_witness_table.b3c, @Core.IntLiteral.as.ImplicitAs.impl.0e9(%int_64) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.55a: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1, @Core.IntLiteral.as.ImplicitAs.impl.0e9(%int_64) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.a1b: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.55a = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.6e8: %ImplicitAs.type.221 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.091) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.a04: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i64, %ImplicitAs.facet.6e8) [concrete] +// CHECK:STDOUT: %.f34: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.a04, %ImplicitAs.facet.6e8 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.89f: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.a1b [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.a1b, @Core.IntLiteral.as.ImplicitAs.impl.Convert.1(%int_64) [concrete] +// CHECK:STDOUT: %bound_method.c5e: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] +// CHECK:STDOUT: %int_1.d98: %i64 = int_value 1 [concrete] +// CHECK:STDOUT: %LongLongResult: type = class_type @LongLongResult [concrete] +// CHECK:STDOUT: %pattern_type.357: type = pattern_type %LongLongResult [concrete] +// CHECK:STDOUT: %cpp_long_long_result.patt: %pattern_type.357 = value_binding_pattern cpp_long_long_result [concrete] +// CHECK:STDOUT: %PassLongLong.cpp_overload_set.type: type = cpp_overload_set_type @PassLongLong.cpp_overload_set [concrete] +// CHECK:STDOUT: %PassLongLong.cpp_overload_set.value: %PassLongLong.cpp_overload_set.type = cpp_overload_set_value @PassLongLong.cpp_overload_set [concrete] +// CHECK:STDOUT: %ptr.662: type = ptr_type %LongLongResult [concrete] +// CHECK:STDOUT: %PassLongLong__carbon_thunk.type.4c6a2a.1: type = fn_type @PassLongLong__carbon_thunk.1 [concrete] +// CHECK:STDOUT: %PassLongLong__carbon_thunk.8eb04c.1: %PassLongLong__carbon_thunk.type.4c6a2a.1 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long: type = class_type @Long64 [concrete] +// CHECK:STDOUT: %pattern_type.ada: type = pattern_type %Cpp.long [concrete] +// CHECK:STDOUT: %cpp_long.patt: %pattern_type.ada = value_binding_pattern cpp_long [concrete] +// CHECK:STDOUT: %ImplicitAs.type.340: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long)> [concrete] +// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.5a7: = impl_witness imports.%ImplicitAs.impl_witness_table.f73 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.210: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.5a7) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.562: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Cpp.long, %ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %.6dd: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.562, %ImplicitAs.facet.210 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce [concrete] +// CHECK:STDOUT: %int_1.33f: %Cpp.long = int_value 1 [concrete] +// CHECK:STDOUT: %LongResult: type = class_type @LongResult [concrete] +// CHECK:STDOUT: %pattern_type.ae7: type = pattern_type %LongResult [concrete] +// CHECK:STDOUT: %cpp_long_result.patt: %pattern_type.ae7 = value_binding_pattern cpp_long_result [concrete] +// CHECK:STDOUT: %ptr.aec: type = ptr_type %LongResult [concrete] +// CHECK:STDOUT: %PassLongLong__carbon_thunk.type.4c6a2a.2: type = fn_type @PassLongLong__carbon_thunk.2 [concrete] +// CHECK:STDOUT: %PassLongLong__carbon_thunk.8eb04c.2: %PassLongLong__carbon_thunk.type.4c6a2a.2 = struct_value () [concrete] +// CHECK:STDOUT: %carbon_i64.patt: %pattern_type.f57 = value_binding_pattern carbon_i64 [concrete] +// CHECK:STDOUT: %carbon_i64_result.patt: %pattern_type.357 = value_binding_pattern carbon_i64_result [concrete] +// CHECK:STDOUT: %f32.c73: type = class_type @Float, @Float(%int_32) [concrete] +// CHECK:STDOUT: %As.type.998: type = facet_type <@As, @As(%i64)> [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.c5d: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl.f25(%To.fe9) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.6ee: %Core.IntLiteral.as.As.impl.Convert.type.c5d = struct_value () [symbolic] +// CHECK:STDOUT: %As.impl_witness.2e1: = impl_witness imports.%As.impl_witness_table.1c5, @Core.IntLiteral.as.As.impl.f25(%int_64) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type.1a1: type = fn_type @Core.IntLiteral.as.As.impl.Convert, @Core.IntLiteral.as.As.impl.f25(%int_64) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.3d9: %Core.IntLiteral.as.As.impl.Convert.type.1a1 = struct_value () [concrete] +// CHECK:STDOUT: %As.facet: %As.type.998 = facet_value Core.IntLiteral, (%As.impl_witness.2e1) [concrete] +// CHECK:STDOUT: %As.WithSelf.Convert.type.2b4: type = fn_type @As.WithSelf.Convert, @As.WithSelf(%i64, %As.facet) [concrete] +// CHECK:STDOUT: %.01b: type = fn_type_with_self_type %As.WithSelf.Convert.type.2b4, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.3d9 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.As.impl.Convert.3d9, @Core.IntLiteral.as.As.impl.Convert(%int_64) [concrete] +// CHECK:STDOUT: %bound_method.991: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert.specific_fn [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.a75: = impl_witness imports.%ImplicitAs.impl_witness_table.b8b, @Int.as.ImplicitAs.impl(%int_64) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.ad9: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%int_64) [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.be5: %Int.as.ImplicitAs.impl.Convert.type.ad9 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.cee: %ImplicitAs.type.7cb = facet_value %i64, (%ImplicitAs.impl_witness.a75) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.004: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(Core.IntLiteral, %ImplicitAs.facet.cee) [concrete] +// CHECK:STDOUT: %.779: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.004, %ImplicitAs.facet.cee [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.d98, %Int.as.ImplicitAs.impl.Convert.be5 [concrete] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Int.as.ImplicitAs.impl.Convert.be5, @Int.as.ImplicitAs.impl.Convert(%int_64) [concrete] +// CHECK:STDOUT: %bound_method.e21: = bound_method %int_1.d98, %Int.as.ImplicitAs.impl.Convert.specific_fn [concrete] +// CHECK:STDOUT: %array_type: type = array_type %int_1.5b8, %f32.c73 [concrete] +// CHECK:STDOUT: %f32.9b3: type = float_type %int_32, f32 [concrete] +// CHECK:STDOUT: %pattern_type.18b: type = pattern_type %array_type [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.18b = ref_binding_pattern a [concrete] +// CHECK:STDOUT: %a.var_patt: %pattern_type.18b = var_pattern %a.patt [concrete] +// CHECK:STDOUT: %float.6da: Core.FloatLiteral = float_literal_value 10e-1 [concrete] +// CHECK:STDOUT: %tuple.type: type = tuple_type (Core.FloatLiteral) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%float.6da) [concrete] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.ed3: type = facet_type <@ImplicitAs, @ImplicitAs(%f32.c73)> [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.063: type = fn_type @Core.FloatLiteral.as.ImplicitAs.impl.Convert, @Core.FloatLiteral.as.ImplicitAs.impl(%N) [symbolic] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.d4f: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.063 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.303: = impl_witness imports.%ImplicitAs.impl_witness_table.393, @Core.FloatLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.a62: type = fn_type @Core.FloatLiteral.as.ImplicitAs.impl.Convert, @Core.FloatLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.b37: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.a62 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.65e: %ImplicitAs.type.ed3 = facet_value Core.FloatLiteral, (%ImplicitAs.impl_witness.303) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.2e4: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%f32.c73, %ImplicitAs.facet.65e) [concrete] +// CHECK:STDOUT: %.17b: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.2e4, %ImplicitAs.facet.65e [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %float.6da, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.b37 [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.FloatLiteral.as.ImplicitAs.impl.Convert.b37, @Core.FloatLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.3e4: = bound_method %float.6da, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] +// CHECK:STDOUT: %float.943: %f32.c73 = float_value 1 [concrete] +// CHECK:STDOUT: %array: %array_type = tuple_value (%float.943) [concrete] +// CHECK:STDOUT: %Destroy.Op.type.1d8f74.3: type = fn_type @Destroy.Op.loc24_3.3 [concrete] +// CHECK:STDOUT: %Destroy.Op.1a2547.3: %Destroy.Op.type.1d8f74.3 = struct_value () [concrete] +// CHECK:STDOUT: %LongLongResult.cpp_destructor.type: type = fn_type @LongLongResult.cpp_destructor [concrete] +// CHECK:STDOUT: %LongLongResult.cpp_destructor: %LongLongResult.cpp_destructor.type = struct_value () [concrete] +// CHECK:STDOUT: %LongResult.cpp_destructor.type: type = fn_type @LongResult.cpp_destructor [concrete] +// CHECK:STDOUT: %LongResult.cpp_destructor: %LongResult.cpp_destructor.type = struct_value () [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { +// CHECK:STDOUT: .long_long = @F.%i64.2 +// CHECK:STDOUT: .LongLongResult = %LongLongResult.decl +// CHECK:STDOUT: .PassLongLong = %PassLongLong.cpp_overload_set.value +// CHECK:STDOUT: .long = constants.%Cpp.long +// CHECK:STDOUT: .LongResult = %LongResult.decl +// CHECK:STDOUT: import Cpp//... +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import_ref.edf: @Core.IntLiteral.as.ImplicitAs.impl.0e9.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.0e9.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.845)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.b3c = impl_witness_table (%Core.import_ref.edf), @Core.IntLiteral.as.ImplicitAs.impl.0e9 [concrete] +// CHECK:STDOUT: %Core.import_ref.32e: @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert.type (%Int.as.ImplicitAs.impl.Convert.type.48d) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert (constants.%Int.as.ImplicitAs.impl.Convert.0f9)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.b8b = impl_witness_table (%Core.import_ref.32e), @Int.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: %LongLongResult.decl: type = class_decl @LongLongResult [concrete = constants.%LongLongResult] {} {} +// CHECK:STDOUT: %PassLongLong.cpp_overload_set.value: %PassLongLong.cpp_overload_set.type = cpp_overload_set_value @PassLongLong.cpp_overload_set [concrete = constants.%PassLongLong.cpp_overload_set.value] +// CHECK:STDOUT: %PassLongLong__carbon_thunk.decl.204cd1.1: %PassLongLong__carbon_thunk.type.4c6a2a.1 = fn_decl @PassLongLong__carbon_thunk.1 [concrete = constants.%PassLongLong__carbon_thunk.8eb04c.1] { +// CHECK:STDOUT: +// CHECK:STDOUT: } { +// CHECK:STDOUT: +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import_ref.06c: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.f73 = impl_witness_table (%Core.import_ref.06c), @Core.IntLiteral.as.ImplicitAs.impl.71b [concrete] +// CHECK:STDOUT: %LongResult.decl: type = class_decl @LongResult [concrete = constants.%LongResult] {} {} +// CHECK:STDOUT: %PassLongLong__carbon_thunk.decl.204cd1.2: %PassLongLong__carbon_thunk.type.4c6a2a.2 = fn_decl @PassLongLong__carbon_thunk.2 [concrete = constants.%PassLongLong__carbon_thunk.8eb04c.2] { +// CHECK:STDOUT: +// CHECK:STDOUT: } { +// CHECK:STDOUT: +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import_ref.64b: @Core.IntLiteral.as.As.impl.f25.%Core.IntLiteral.as.As.impl.Convert.type (%Core.IntLiteral.as.As.impl.Convert.type.c5d) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.As.impl.f25.%Core.IntLiteral.as.As.impl.Convert (constants.%Core.IntLiteral.as.As.impl.Convert.6ee)] +// CHECK:STDOUT: %As.impl_witness_table.1c5 = impl_witness_table (%Core.import_ref.64b), @Core.IntLiteral.as.As.impl.f25 [concrete] +// CHECK:STDOUT: %Core.import_ref.c4c: @Core.FloatLiteral.as.ImplicitAs.impl.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.type (%Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.063) = import_ref Core//prelude/types/float, loc{{\d+_\d+}}, loaded [symbolic = @Core.FloatLiteral.as.ImplicitAs.impl.%Core.FloatLiteral.as.ImplicitAs.impl.Convert (constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.d4f)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.393 = impl_witness_table (%Core.import_ref.c4c), @Core.FloatLiteral.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @F() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: %int_1.loc15: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc15: %.f34 = impl_witness_access constants.%ImplicitAs.impl_witness.091, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a1b] +// CHECK:STDOUT: %bound_method.loc15_38.1: = bound_method %int_1.loc15, %impl.elem0.loc15 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.89f] +// CHECK:STDOUT: %specific_fn.loc15: = specific_function %impl.elem0.loc15, @Core.IntLiteral.as.ImplicitAs.impl.Convert.1(constants.%int_64) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc15_38.2: = bound_method %int_1.loc15, %specific_fn.loc15 [concrete = constants.%bound_method.c5e] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15: init %i64 = call %bound_method.loc15_38.2(%int_1.loc15) [concrete = constants.%int_1.d98] +// CHECK:STDOUT: %.loc15_38.1: %i64 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15 [concrete = constants.%int_1.d98] +// CHECK:STDOUT: %.loc15_38.2: %i64 = converted %int_1.loc15, %.loc15_38.1 [concrete = constants.%int_1.d98] +// CHECK:STDOUT: %.loc15_25: type = splice_block %long_long.ref.loc15 [concrete = constants.%i64] { +// CHECK:STDOUT: %Cpp.ref.loc15: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: +// CHECK:STDOUT: %long_long.ref.loc15: type = name_ref long_long, %i64.2 [concrete = constants.%i64] +// CHECK:STDOUT: } +// CHECK:STDOUT: %cpp_long_long: %i64 = wrapper_binding cpp_long_long, %.loc15_38.2 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %cpp_long_long.patt: %pattern_type.f57 = value_binding_pattern cpp_long_long [concrete = constants.%cpp_long_long.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %Cpp.ref.loc16_57: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %PassLongLong.ref.loc16: %PassLongLong.cpp_overload_set.type = name_ref PassLongLong, imports.%PassLongLong.cpp_overload_set.value [concrete = constants.%PassLongLong.cpp_overload_set.value] +// CHECK:STDOUT: %cpp_long_long.ref.loc16: %i64 = name_ref cpp_long_long, %cpp_long_long +// CHECK:STDOUT: %.loc16_87.1: ref %LongLongResult = temporary_storage +// CHECK:STDOUT: %addr.loc16: %ptr.662 = addr_of %.loc16_87.1 +// CHECK:STDOUT: %PassLongLong__carbon_thunk.call.loc16: init %empty_tuple.type = call imports.%PassLongLong__carbon_thunk.decl.204cd1.1(%cpp_long_long.ref.loc16, %addr.loc16) +// CHECK:STDOUT: %.loc16_87.2: init %LongLongResult to %.loc16_87.1 = mark_in_place_init %PassLongLong__carbon_thunk.call.loc16 +// CHECK:STDOUT: %.loc16_87.3: ref %LongLongResult = temporary %.loc16_87.1, %.loc16_87.2 +// CHECK:STDOUT: %.loc16_87.4: %LongLongResult = acquire_value %.loc16_87.3 +// CHECK:STDOUT: %.loc16_39: type = splice_block %LongLongResult.ref.loc16 [concrete = constants.%LongLongResult] { +// CHECK:STDOUT: %Cpp.ref.loc16_36: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %LongLongResult.ref.loc16: type = name_ref LongLongResult, imports.%LongLongResult.decl [concrete = constants.%LongLongResult] +// CHECK:STDOUT: } +// CHECK:STDOUT: %cpp_long_long_result: %LongLongResult = wrapper_binding cpp_long_long_result, %.loc16_87.4 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %cpp_long_long_result.patt: %pattern_type.357 = value_binding_pattern cpp_long_long_result [concrete = constants.%cpp_long_long_result.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %int_1.loc18: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc18: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc18: = bound_method %int_1.loc18, %impl.elem0.loc18 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18: init %Cpp.long = call %bound_method.loc18(%int_1.loc18) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc18_28.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc18_28.2: %Cpp.long = converted %int_1.loc18, %.loc18_28.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc18_20: type = splice_block %long.ref [concrete = constants.%Cpp.long] { +// CHECK:STDOUT: %Cpp.ref.loc18: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %long.ref: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long] +// CHECK:STDOUT: } +// CHECK:STDOUT: %cpp_long: %Cpp.long = wrapper_binding cpp_long, %.loc18_28.2 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %cpp_long.patt: %pattern_type.ada = value_binding_pattern cpp_long [concrete = constants.%cpp_long.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %Cpp.ref.loc19_48: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %PassLongLong.ref.loc19: %PassLongLong.cpp_overload_set.type = name_ref PassLongLong, imports.%PassLongLong.cpp_overload_set.value [concrete = constants.%PassLongLong.cpp_overload_set.value] +// CHECK:STDOUT: %cpp_long.ref: %Cpp.long = name_ref cpp_long, %cpp_long +// CHECK:STDOUT: %.loc19_73.1: ref %LongResult = temporary_storage +// CHECK:STDOUT: %addr.loc19: %ptr.aec = addr_of %.loc19_73.1 +// CHECK:STDOUT: %PassLongLong__carbon_thunk.call.loc19: init %empty_tuple.type = call imports.%PassLongLong__carbon_thunk.decl.204cd1.2(%cpp_long.ref, %addr.loc19) +// CHECK:STDOUT: %.loc19_73.2: init %LongResult to %.loc19_73.1 = mark_in_place_init %PassLongLong__carbon_thunk.call.loc19 +// CHECK:STDOUT: %.loc19_73.3: ref %LongResult = temporary %.loc19_73.1, %.loc19_73.2 +// CHECK:STDOUT: %.loc19_73.4: %LongResult = acquire_value %.loc19_73.3 +// CHECK:STDOUT: %.loc19_34: type = splice_block %LongResult.ref [concrete = constants.%LongResult] { +// CHECK:STDOUT: %Cpp.ref.loc19_31: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %LongResult.ref: type = name_ref LongResult, imports.%LongResult.decl [concrete = constants.%LongResult] +// CHECK:STDOUT: } +// CHECK:STDOUT: %cpp_long_result: %LongResult = wrapper_binding cpp_long_result, %.loc19_73.4 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %cpp_long_result.patt: %pattern_type.ae7 = value_binding_pattern cpp_long_result [concrete = constants.%cpp_long_result.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %cpp_long_long.ref.loc21: %i64 = name_ref cpp_long_long, %cpp_long_long +// CHECK:STDOUT: %i64.loc21: type = type_literal constants.%i64 [concrete = constants.%i64] +// CHECK:STDOUT: %carbon_i64: %i64 = wrapper_binding carbon_i64, %cpp_long_long.ref.loc21 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %carbon_i64.patt: %pattern_type.f57 = value_binding_pattern carbon_i64 [concrete = constants.%carbon_i64.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %Cpp.ref.loc22_54: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %PassLongLong.ref.loc22: %PassLongLong.cpp_overload_set.type = name_ref PassLongLong, imports.%PassLongLong.cpp_overload_set.value [concrete = constants.%PassLongLong.cpp_overload_set.value] +// CHECK:STDOUT: %carbon_i64.ref: %i64 = name_ref carbon_i64, %carbon_i64 +// CHECK:STDOUT: %.loc22_81.1: ref %LongLongResult = temporary_storage +// CHECK:STDOUT: %addr.loc22: %ptr.662 = addr_of %.loc22_81.1 +// CHECK:STDOUT: %PassLongLong__carbon_thunk.call.loc22: init %empty_tuple.type = call imports.%PassLongLong__carbon_thunk.decl.204cd1.1(%carbon_i64.ref, %addr.loc22) +// CHECK:STDOUT: %.loc22_81.2: init %LongLongResult to %.loc22_81.1 = mark_in_place_init %PassLongLong__carbon_thunk.call.loc22 +// CHECK:STDOUT: %.loc22_81.3: ref %LongLongResult = temporary %.loc22_81.1, %.loc22_81.2 +// CHECK:STDOUT: %.loc22_81.4: %LongLongResult = acquire_value %.loc22_81.3 +// CHECK:STDOUT: %.loc22_36: type = splice_block %LongLongResult.ref.loc22 [concrete = constants.%LongLongResult] { +// CHECK:STDOUT: %Cpp.ref.loc22_33: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %LongLongResult.ref.loc22: type = name_ref LongLongResult, imports.%LongLongResult.decl [concrete = constants.%LongLongResult] +// CHECK:STDOUT: } +// CHECK:STDOUT: %carbon_i64_result: %LongLongResult = wrapper_binding carbon_i64_result, %.loc22_81.4 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %carbon_i64_result.patt: %pattern_type.357 = value_binding_pattern carbon_i64_result [concrete = constants.%carbon_i64_result.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a.var: ref %array_type = var_storage %a.var_patt +// CHECK:STDOUT: %float: Core.FloatLiteral = float_literal_value 10e-1 [concrete = constants.%float.6da] +// CHECK:STDOUT: %.loc24_55.1: %tuple.type = tuple_literal (%float) [concrete = constants.%tuple] +// CHECK:STDOUT: %impl.elem0.loc24_55: %.17b = impl_witness_access constants.%ImplicitAs.impl_witness.303, element0 [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.b37] +// CHECK:STDOUT: %bound_method.loc24_55.1: = bound_method %float, %impl.elem0.loc24_55 [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc24_55: = specific_function %impl.elem0.loc24_55, @Core.FloatLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc24_55.2: = bound_method %float, %specific_fn.loc24_55 [concrete = constants.%bound_method.3e4] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.call: init %f32.c73 = call %bound_method.loc24_55.2(%float) [concrete = constants.%float.943] +// CHECK:STDOUT: %.loc24_55.2: init %f32.c73 = converted %float, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%float.943] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] +// CHECK:STDOUT: %.loc24_55.3: ref %f32.c73 = array_index %a.var, %int_0 +// CHECK:STDOUT: %.loc24_55.4: init %f32.c73 to %.loc24_55.3 = in_place_init %.loc24_55.2 [concrete = constants.%float.943] +// CHECK:STDOUT: %.loc24_55.5: init %array_type to %a.var = array_init (%.loc24_55.4) [concrete = constants.%array] +// CHECK:STDOUT: %.loc24_3: init %array_type = converted %.loc24_55.1, %.loc24_55.5 [concrete = constants.%array] +// CHECK:STDOUT: assign %a.var, %.loc24_3 +// CHECK:STDOUT: %.loc24_46: type = splice_block %array_type [concrete = constants.%array_type] { +// CHECK:STDOUT: %f32: type = type_literal constants.%f32.c73 [concrete = constants.%f32.c73] +// CHECK:STDOUT: %int_1.loc24: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %Cpp.ref.loc24: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %long_long.ref.loc24: type = name_ref long_long, %i64.2 [concrete = constants.%i64] +// CHECK:STDOUT: %impl.elem0.loc24_30.1: %.01b = impl_witness_access constants.%As.impl_witness.2e1, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.3d9] +// CHECK:STDOUT: %bound_method.loc24_30.1: = bound_method %int_1.loc24, %impl.elem0.loc24_30.1 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc24_30.1: = specific_function %impl.elem0.loc24_30.1, @Core.IntLiteral.as.As.impl.Convert(constants.%int_64) [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc24_30.2: = bound_method %int_1.loc24, %specific_fn.loc24_30.1 [concrete = constants.%bound_method.991] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %i64 = call %bound_method.loc24_30.2(%int_1.loc24) [concrete = constants.%int_1.d98] +// CHECK:STDOUT: %.loc24_30.1: %i64 = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.d98] +// CHECK:STDOUT: %.loc24_30.2: %i64 = converted %int_1.loc24, %.loc24_30.1 [concrete = constants.%int_1.d98] +// CHECK:STDOUT: %impl.elem0.loc24_30.2: %.779 = impl_witness_access constants.%ImplicitAs.impl_witness.a75, element0 [concrete = constants.%Int.as.ImplicitAs.impl.Convert.be5] +// CHECK:STDOUT: %bound_method.loc24_30.3: = bound_method %.loc24_30.2, %impl.elem0.loc24_30.2 [concrete = constants.%Int.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc24_30.2: = specific_function %impl.elem0.loc24_30.2, @Int.as.ImplicitAs.impl.Convert(constants.%int_64) [concrete = constants.%Int.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc24_30.4: = bound_method %.loc24_30.2, %specific_fn.loc24_30.2 [concrete = constants.%bound_method.e21] +// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call: init Core.IntLiteral = call %bound_method.loc24_30.4(%.loc24_30.2) [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc24_30.3: Core.IntLiteral = value_of_initializer %Int.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc24_30.4: Core.IntLiteral = converted %.loc24_30.2, %.loc24_30.3 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %array_type: type = array_type %.loc24_30.4, %f32 [concrete = constants.%array_type] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a: ref %array_type = wrapper_binding a, %a.var +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %a.patt: %pattern_type.18b = ref_binding_pattern a [concrete = constants.%a.patt] +// CHECK:STDOUT: %a.var_patt: %pattern_type.18b = var_pattern %a.patt [concrete = constants.%a.var_patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %Destroy.Op.bound: = bound_method %a.var, constants.%Destroy.Op.1a2547.3 +// CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%a.var) +// CHECK:STDOUT: %LongLongResult.cpp_destructor.bound.loc22: = bound_method %.loc22_81.3, constants.%LongLongResult.cpp_destructor +// CHECK:STDOUT: %LongLongResult.cpp_destructor.call.loc22: init %empty_tuple.type = call %LongLongResult.cpp_destructor.bound.loc22(%.loc22_81.3) +// CHECK:STDOUT: %LongResult.cpp_destructor.bound: = bound_method %.loc19_73.3, constants.%LongResult.cpp_destructor +// CHECK:STDOUT: %LongResult.cpp_destructor.call: init %empty_tuple.type = call %LongResult.cpp_destructor.bound(%.loc19_73.3) +// CHECK:STDOUT: %LongLongResult.cpp_destructor.bound.loc16: = bound_method %.loc16_87.3, constants.%LongLongResult.cpp_destructor +// CHECK:STDOUT: %LongLongResult.cpp_destructor.call.loc16: init %empty_tuple.type = call %LongLongResult.cpp_destructor.bound.loc16(%.loc16_87.3) +// CHECK:STDOUT: +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc24_3.1(%self.param: ref %f32.9b3) = "no_op"; +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc24_3.2(%self.param: ref %f32.c73) { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc24_3.3(%self.param: ref %array_type) { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- copy_long.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %Cpp.long: type = class_type @Long64 [concrete] +// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] +// CHECK:STDOUT: %i64: type = class_type @Int, @Int(%int_64) [concrete] +// CHECK:STDOUT: %i64.builtin: type = int_type signed, %int_64 [concrete] +// CHECK:STDOUT: %pattern_type.ada: type = pattern_type %Cpp.long [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.ada = ref_binding_pattern a [concrete] +// CHECK:STDOUT: %a.var_patt: %pattern_type.ada = var_pattern %a.patt [concrete] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.340: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.5a7: = impl_witness imports.%ImplicitAs.impl_witness_table.f73 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.5a7) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.562: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Cpp.long, %ImplicitAs.facet) [concrete] +// CHECK:STDOUT: %.6dd: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.562, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %int_1.33f: %Cpp.long = int_value 1 [concrete] +// CHECK:STDOUT: %b.patt: %pattern_type.ada = ref_binding_pattern b [concrete] +// CHECK:STDOUT: %b.var_patt: %pattern_type.ada = var_pattern %b.patt [concrete] +// CHECK:STDOUT: %Copy.impl_witness.418: = impl_witness imports.%Copy.impl_witness_table.30d [concrete] +// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %Cpp.long, (%Copy.impl_witness.418) [concrete] +// CHECK:STDOUT: %Copy.WithSelf.Op.type.165: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet) [concrete] +// CHECK:STDOUT: %.a14: type = fn_type_with_self_type %Copy.WithSelf.Op.type.165, %Copy.facet [concrete] +// CHECK:STDOUT: %Cpp.long.as.Copy.impl.Op.type: type = fn_type @Cpp.long.as.Copy.impl.Op [concrete] +// CHECK:STDOUT: %Cpp.long.as.Copy.impl.Op: %Cpp.long.as.Copy.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %Destroy.Op.type.1d8f74.3: type = fn_type @Destroy.Op.loc9_3.3 [concrete] +// CHECK:STDOUT: %Destroy.Op.1a2547.3: %Destroy.Op.type.1d8f74.3 = struct_value () [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { +// CHECK:STDOUT: .long = constants.%Cpp.long +// CHECK:STDOUT: import Cpp//... +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import_ref.06c: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.f73 = impl_witness_table (%Core.import_ref.06c), @Core.IntLiteral.as.ImplicitAs.impl.71b [concrete] +// CHECK:STDOUT: %Core.import_ref.9c3: %Cpp.long.as.Copy.impl.Op.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.Copy.impl.Op] +// CHECK:STDOUT: %Copy.impl_witness_table.30d = impl_witness_table (%Core.import_ref.9c3), @Cpp.long.as.Copy.impl [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @CopyLongLong() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: %a.var: ref %Cpp.long = var_storage %a.var_patt +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc8: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc8: = bound_method %int_1, %impl.elem0.loc8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %Cpp.long = call %bound_method.loc8(%int_1) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc8_3: init %Cpp.long = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.33f] +// CHECK:STDOUT: assign %a.var, %.loc8_3 +// CHECK:STDOUT: %.loc8_13: type = splice_block %long.ref.loc8 [concrete = constants.%Cpp.long] { +// CHECK:STDOUT: %Cpp.ref.loc8: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %long.ref.loc8: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a: ref %Cpp.long = wrapper_binding a, %a.var +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %a.patt: %pattern_type.ada = ref_binding_pattern a [concrete = constants.%a.patt] +// CHECK:STDOUT: %a.var_patt: %pattern_type.ada = var_pattern %a.patt [concrete = constants.%a.var_patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %b.var: ref %Cpp.long = var_storage %b.var_patt +// CHECK:STDOUT: %a.ref: ref %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %.loc9_28: %Cpp.long = acquire_value %a.ref +// CHECK:STDOUT: %impl.elem0.loc9: %.a14 = impl_witness_access constants.%Copy.impl_witness.418, element0 [concrete = constants.%Cpp.long.as.Copy.impl.Op] +// CHECK:STDOUT: %bound_method.loc9: = bound_method %.loc9_28, %impl.elem0.loc9 +// CHECK:STDOUT: %Cpp.long.as.Copy.impl.Op.call: init %Cpp.long = call %bound_method.loc9(%.loc9_28) +// CHECK:STDOUT: assign %b.var, %Cpp.long.as.Copy.impl.Op.call +// CHECK:STDOUT: %.loc9_20: type = splice_block %long.ref.loc9 [concrete = constants.%Cpp.long] { +// CHECK:STDOUT: %Cpp.ref.loc9: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %long.ref.loc9: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long] +// CHECK:STDOUT: } +// CHECK:STDOUT: %b: ref %Cpp.long = wrapper_binding b, %b.var +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %b.patt: %pattern_type.ada = ref_binding_pattern b [concrete = constants.%b.patt] +// CHECK:STDOUT: %b.var_patt: %pattern_type.ada = var_pattern %b.patt [concrete = constants.%b.var_patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %Destroy.Op.bound.loc9: = bound_method %b.var, constants.%Destroy.Op.1a2547.3 +// CHECK:STDOUT: %Destroy.Op.call.loc9: init %empty_tuple.type = call %Destroy.Op.bound.loc9(%b.var) +// CHECK:STDOUT: %Destroy.Op.bound.loc8: = bound_method %a.var, constants.%Destroy.Op.1a2547.3 +// CHECK:STDOUT: %Destroy.Op.call.loc8: init %empty_tuple.type = call %Destroy.Op.bound.loc8(%a.var) +// CHECK:STDOUT: +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc9_3.1(%self.param: ref %i64.builtin) = "no_op"; +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc9_3.2(%self.param: ref %i64) { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc9_3.3(%self.param: ref %Cpp.long) { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- comparisons_homogeneous_long.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %Cpp.long: type = class_type @Long64 [concrete] +// CHECK:STDOUT: %pattern_type.ada: type = pattern_type %Cpp.long [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.ada = value_binding_pattern a [concrete] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.340: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long)> [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.5a7: = impl_witness imports.%ImplicitAs.impl_witness_table.f73 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.5a7) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.562: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Cpp.long, %ImplicitAs.facet) [concrete] +// CHECK:STDOUT: %.6dd: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.562, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %int_1.33f: %Cpp.long = int_value 1 [concrete] +// CHECK:STDOUT: %b.patt: %pattern_type.ada = value_binding_pattern b [concrete] +// CHECK:STDOUT: %EqWith.type.3ed: type = facet_type <@EqWith, @EqWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %EqWith.impl_witness.6db: = impl_witness imports.%EqWith.impl_witness_table.cf3 [concrete] +// CHECK:STDOUT: %EqWith.facet.95b: %EqWith.type.3ed = facet_value %Cpp.long, (%EqWith.impl_witness.6db) [concrete] +// CHECK:STDOUT: %EqWith.WithSelf.Equal.type.1bc: type = fn_type @EqWith.WithSelf.Equal, @EqWith.WithSelf(%Cpp.long, %EqWith.facet.95b) [concrete] +// CHECK:STDOUT: %EqWith.WithSelf.NotEqual.type.6a3: type = fn_type @EqWith.WithSelf.NotEqual, @EqWith.WithSelf(%Cpp.long, %EqWith.facet.95b) [concrete] +// CHECK:STDOUT: %.0e6: type = fn_type_with_self_type %EqWith.WithSelf.Equal.type.1bc, %EqWith.facet.95b [concrete] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.Equal.type.78c: type = fn_type @Cpp.long.as.EqWith.impl.Equal.3 [concrete] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.Equal.1ca: %Cpp.long.as.EqWith.impl.Equal.type.78c = struct_value () [concrete] +// CHECK:STDOUT: %.f1b: type = fn_type_with_self_type %EqWith.WithSelf.NotEqual.type.6a3, %EqWith.facet.95b [concrete] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.NotEqual.type.8e5: type = fn_type @Cpp.long.as.EqWith.impl.NotEqual.3 [concrete] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.NotEqual.a6a: %Cpp.long.as.EqWith.impl.NotEqual.type.8e5 = struct_value () [concrete] +// CHECK:STDOUT: %OrderedWith.type.484: type = facet_type <@OrderedWith, @OrderedWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %OrderedWith.impl_witness.3c9: = impl_witness imports.%OrderedWith.impl_witness_table.47f [concrete] +// CHECK:STDOUT: %OrderedWith.facet.960: %OrderedWith.type.484 = facet_value %Cpp.long, (%OrderedWith.impl_witness.3c9) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.Less.type.b6e: type = fn_type @OrderedWith.WithSelf.Less, @OrderedWith.WithSelf(%Cpp.long, %OrderedWith.facet.960) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.LessOrEquivalent.type.4a2: type = fn_type @OrderedWith.WithSelf.LessOrEquivalent, @OrderedWith.WithSelf(%Cpp.long, %OrderedWith.facet.960) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.Greater.type.899: type = fn_type @OrderedWith.WithSelf.Greater, @OrderedWith.WithSelf(%Cpp.long, %OrderedWith.facet.960) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.GreaterOrEquivalent.type.28b: type = fn_type @OrderedWith.WithSelf.GreaterOrEquivalent, @OrderedWith.WithSelf(%Cpp.long, %OrderedWith.facet.960) [concrete] +// CHECK:STDOUT: %.56d: type = fn_type_with_self_type %OrderedWith.WithSelf.Greater.type.899, %OrderedWith.facet.960 [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Greater.type.725: type = fn_type @Cpp.long.as.OrderedWith.impl.Greater.3 [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Greater.7c8: %Cpp.long.as.OrderedWith.impl.Greater.type.725 = struct_value () [concrete] +// CHECK:STDOUT: %.f43: type = fn_type_with_self_type %OrderedWith.WithSelf.Less.type.b6e, %OrderedWith.facet.960 [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Less.type.335: type = fn_type @Cpp.long.as.OrderedWith.impl.Less.3 [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Less.606: %Cpp.long.as.OrderedWith.impl.Less.type.335 = struct_value () [concrete] +// CHECK:STDOUT: %.ac2: type = fn_type_with_self_type %OrderedWith.WithSelf.GreaterOrEquivalent.type.28b, %OrderedWith.facet.960 [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.2d9: type = fn_type @Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.3 [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.a09: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.2d9 = struct_value () [concrete] +// CHECK:STDOUT: %.d14: type = fn_type_with_self_type %OrderedWith.WithSelf.LessOrEquivalent.type.4a2, %OrderedWith.facet.960 [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.42c: type = fn_type @Cpp.long.as.OrderedWith.impl.LessOrEquivalent.3 [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.0c8: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.42c = struct_value () [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { +// CHECK:STDOUT: .long = constants.%Cpp.long +// CHECK:STDOUT: import Cpp//... +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import_ref.06c: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.f73 = impl_witness_table (%Core.import_ref.06c), @Core.IntLiteral.as.ImplicitAs.impl.71b [concrete] +// CHECK:STDOUT: %Core.import_ref.a87: %Cpp.long.as.EqWith.impl.Equal.type.78c = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.EqWith.impl.Equal.1ca] +// CHECK:STDOUT: %Core.import_ref.adc9b: %Cpp.long.as.EqWith.impl.NotEqual.type.8e5 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.EqWith.impl.NotEqual.a6a] +// CHECK:STDOUT: %EqWith.impl_witness_table.cf3 = impl_witness_table (%Core.import_ref.a87, %Core.import_ref.adc9b), @Cpp.long.as.EqWith.impl.f72 [concrete] +// CHECK:STDOUT: %Core.import_ref.0e8: %Cpp.long.as.OrderedWith.impl.Less.type.335 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.OrderedWith.impl.Less.606] +// CHECK:STDOUT: %Core.import_ref.757ec: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.42c = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.0c8] +// CHECK:STDOUT: %Core.import_ref.c32c: %Cpp.long.as.OrderedWith.impl.Greater.type.725 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.OrderedWith.impl.Greater.7c8] +// CHECK:STDOUT: %Core.import_ref.381: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.2d9 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.a09] +// CHECK:STDOUT: %OrderedWith.impl_witness_table.47f = impl_witness_table (%Core.import_ref.0e8, %Core.import_ref.757ec, %Core.import_ref.c32c, %Core.import_ref.381), @Cpp.long.as.OrderedWith.impl.f51 [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @ComparisonsHomogeneousLong() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: %int_1.loc8: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc8: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc8: = bound_method %int_1.loc8, %impl.elem0.loc8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8: init %Cpp.long = call %bound_method.loc8(%int_1.loc8) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc8_21.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc8_21.2: %Cpp.long = converted %int_1.loc8, %.loc8_21.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc8_13: type = splice_block %long.ref.loc8 [concrete = constants.%Cpp.long] { +// CHECK:STDOUT: %Cpp.ref.loc8: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %long.ref.loc8: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a: %Cpp.long = wrapper_binding a, %.loc8_21.2 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %a.patt: %pattern_type.ada = value_binding_pattern a [concrete = constants.%a.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %int_1.loc9: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc9: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc9: = bound_method %int_1.loc9, %impl.elem0.loc9 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9: init %Cpp.long = call %bound_method.loc9(%int_1.loc9) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc9_21.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc9_21.2: %Cpp.long = converted %int_1.loc9, %.loc9_21.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc9_13: type = splice_block %long.ref.loc9 [concrete = constants.%Cpp.long] { +// CHECK:STDOUT: %Cpp.ref.loc9: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %long.ref.loc9: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long] +// CHECK:STDOUT: } +// CHECK:STDOUT: %b: %Cpp.long = wrapper_binding b, %.loc9_21.2 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %b.patt: %pattern_type.ada = value_binding_pattern b [concrete = constants.%b.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a.ref.loc10: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc10: %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc10: %.0e6 = impl_witness_access constants.%EqWith.impl_witness.6db, element0 [concrete = constants.%Cpp.long.as.EqWith.impl.Equal.1ca] +// CHECK:STDOUT: %bound_method.loc10: = bound_method %a.ref.loc10, %impl.elem0.loc10 +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.Equal.call: init bool = call %bound_method.loc10(%a.ref.loc10, %b.ref.loc10) +// CHECK:STDOUT: %a.ref.loc11: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc11: %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem1.loc11: %.f1b = impl_witness_access constants.%EqWith.impl_witness.6db, element1 [concrete = constants.%Cpp.long.as.EqWith.impl.NotEqual.a6a] +// CHECK:STDOUT: %bound_method.loc11: = bound_method %a.ref.loc11, %impl.elem1.loc11 +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.NotEqual.call: init bool = call %bound_method.loc11(%a.ref.loc11, %b.ref.loc11) +// CHECK:STDOUT: %a.ref.loc12: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc12: %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem2: %.56d = impl_witness_access constants.%OrderedWith.impl_witness.3c9, element2 [concrete = constants.%Cpp.long.as.OrderedWith.impl.Greater.7c8] +// CHECK:STDOUT: %bound_method.loc12: = bound_method %a.ref.loc12, %impl.elem2 +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Greater.call: init bool = call %bound_method.loc12(%a.ref.loc12, %b.ref.loc12) +// CHECK:STDOUT: %a.ref.loc13: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc13: %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc13: %.f43 = impl_witness_access constants.%OrderedWith.impl_witness.3c9, element0 [concrete = constants.%Cpp.long.as.OrderedWith.impl.Less.606] +// CHECK:STDOUT: %bound_method.loc13: = bound_method %a.ref.loc13, %impl.elem0.loc13 +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Less.call: init bool = call %bound_method.loc13(%a.ref.loc13, %b.ref.loc13) +// CHECK:STDOUT: %a.ref.loc14: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc14: %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem3: %.ac2 = impl_witness_access constants.%OrderedWith.impl_witness.3c9, element3 [concrete = constants.%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.a09] +// CHECK:STDOUT: %bound_method.loc14: = bound_method %a.ref.loc14, %impl.elem3 +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.call: init bool = call %bound_method.loc14(%a.ref.loc14, %b.ref.loc14) +// CHECK:STDOUT: %a.ref.loc15: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc15: %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem1.loc15: %.d14 = impl_witness_access constants.%OrderedWith.impl_witness.3c9, element1 [concrete = constants.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.0c8] +// CHECK:STDOUT: %bound_method.loc15: = bound_method %a.ref.loc15, %impl.elem1.loc15 +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.call: init bool = call %bound_method.loc15(%a.ref.loc15, %b.ref.loc15) +// CHECK:STDOUT: +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- comparisons_heterogeneous_long_left_side.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] +// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] +// CHECK:STDOUT: %Int.67af24.1: type = class_type @Int, @Int(%N) [symbolic] +// CHECK:STDOUT: %i64: type = class_type @Int, @Int(%int_64) [concrete] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.221: type = facet_type <@ImplicitAs, @ImplicitAs(%i64)> [concrete] +// CHECK:STDOUT: %Cpp.long: type = class_type @Long64 [concrete] +// CHECK:STDOUT: %pattern_type.ada: type = pattern_type %Cpp.long [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.ada = value_binding_pattern a [concrete] +// CHECK:STDOUT: %ImplicitAs.type.340: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long)> [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.5a7: = impl_witness imports.%ImplicitAs.impl_witness_table.f73 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.210: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.5a7) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.562: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Cpp.long, %ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %.6dd: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.562, %ImplicitAs.facet.210 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce [concrete] +// CHECK:STDOUT: %int_1.33f: %Cpp.long = int_value 1 [concrete] +// CHECK:STDOUT: %EqWith.type.d67: type = facet_type <@EqWith, @EqWith(%i64)> [concrete] +// CHECK:STDOUT: %T.1ae: %ImplicitAs.type.340 = symbolic_binding T, 0 [symbolic] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.NotEqual.type.477445.1: type = fn_type @Cpp.long.as.EqWith.impl.NotEqual.1, @Cpp.long.as.EqWith.impl.e2d(%T.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.NotEqual.367ca8.1: %Cpp.long.as.EqWith.impl.NotEqual.type.477445.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.Equal.type.6a18eb.1: type = fn_type @Cpp.long.as.EqWith.impl.Equal.1, @Cpp.long.as.EqWith.impl.e2d(%T.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.Equal.ee5c37.1: %Cpp.long.as.EqWith.impl.Equal.type.6a18eb.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.NotEqual.type.477445.2: type = fn_type @Cpp.long.as.EqWith.impl.NotEqual.2, @Cpp.long.as.EqWith.impl.e2d(%T.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.NotEqual.367ca8.2: %Cpp.long.as.EqWith.impl.NotEqual.type.477445.2 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.Equal.type.6a18eb.2: type = fn_type @Cpp.long.as.EqWith.impl.Equal.2, @Cpp.long.as.EqWith.impl.e2d(%T.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.Equal.ee5c37.2: %Cpp.long.as.EqWith.impl.Equal.type.6a18eb.2 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.f7de31.2: type = facet_type <@ImplicitAs, @ImplicitAs(%Int.67af24.1)> [symbolic] +// CHECK:STDOUT: %T.4e6: %ImplicitAs.type.f7de31.2 = symbolic_binding T, 1 [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.6de1da.1: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.7, @T.as_type.as.EqWith.impl.956(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.501deb.1: %T.as_type.as.EqWith.impl.NotEqual.type.6de1da.1 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.8af025.1: type = fn_type @T.as_type.as.EqWith.impl.Equal.7, @T.as_type.as.EqWith.impl.956(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.c477d6.1: %T.as_type.as.EqWith.impl.Equal.type.8af025.1 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.6de1da.2: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.8, @T.as_type.as.EqWith.impl.956(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.501deb.2: %T.as_type.as.EqWith.impl.NotEqual.type.6de1da.2 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.8af025.2: type = fn_type @T.as_type.as.EqWith.impl.Equal.8, @T.as_type.as.EqWith.impl.956(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.c477d6.2: %T.as_type.as.EqWith.impl.Equal.type.8af025.2 = struct_value () [symbolic] +// CHECK:STDOUT: %EqWith.type.aee: type = facet_type <@EqWith, @EqWith(Core.IntLiteral)> [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.43c: = impl_witness imports.%ImplicitAs.impl_witness_table.a3a [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.c71: %ImplicitAs.type.221 = facet_value %Cpp.long, (%ImplicitAs.impl_witness.43c) [concrete] +// CHECK:STDOUT: %EqWith.impl_witness.53b: = impl_witness imports.%EqWith.impl_witness_table.561, @T.as_type.as.EqWith.impl.956(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.9269d3.1: type = fn_type @T.as_type.as.EqWith.impl.Equal.8, @T.as_type.as.EqWith.impl.956(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.c936a0.1: %T.as_type.as.EqWith.impl.Equal.type.9269d3.1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.8585e2.1: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.8, @T.as_type.as.EqWith.impl.956(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.44eea9.1: %T.as_type.as.EqWith.impl.NotEqual.type.8585e2.1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.9269d3.2: type = fn_type @T.as_type.as.EqWith.impl.Equal.7, @T.as_type.as.EqWith.impl.956(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.c936a0.2: %T.as_type.as.EqWith.impl.Equal.type.9269d3.2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.8585e2.2: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.7, @T.as_type.as.EqWith.impl.956(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.44eea9.2: %T.as_type.as.EqWith.impl.NotEqual.type.8585e2.2 = struct_value () [concrete] +// CHECK:STDOUT: %EqWith.facet.768: %EqWith.type.d67 = facet_value %Cpp.long, (%EqWith.impl_witness.53b) [concrete] +// CHECK:STDOUT: %EqWith.WithSelf.Equal.type.80c: type = fn_type @EqWith.WithSelf.Equal, @EqWith.WithSelf(%i64, %EqWith.facet.768) [concrete] +// CHECK:STDOUT: %EqWith.WithSelf.NotEqual.type.1dd: type = fn_type @EqWith.WithSelf.NotEqual, @EqWith.WithSelf(%i64, %EqWith.facet.768) [concrete] +// CHECK:STDOUT: %.da9: type = fn_type_with_self_type %EqWith.WithSelf.Equal.type.80c, %EqWith.facet.768 [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.specific_fn.cba536.1: = specific_function %T.as_type.as.EqWith.impl.Equal.c936a0.2, @T.as_type.as.EqWith.impl.Equal.7(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.specific_fn.cba536.2: = specific_function %T.as_type.as.EqWith.impl.Equal.c936a0.1, @T.as_type.as.EqWith.impl.Equal.8(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.294: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %.9e1: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.294, %ImplicitAs.facet.c71 [concrete] +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.type: type = fn_type @Cpp.long.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert: %Cpp.long.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] +// CHECK:STDOUT: %.b06: type = fn_type_with_self_type %EqWith.WithSelf.NotEqual.type.1dd, %EqWith.facet.768 [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.specific_fn.228325.1: = specific_function %T.as_type.as.EqWith.impl.NotEqual.44eea9.2, @T.as_type.as.EqWith.impl.NotEqual.7(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.specific_fn.228325.2: = specific_function %T.as_type.as.EqWith.impl.NotEqual.44eea9.1, @T.as_type.as.EqWith.impl.NotEqual.8(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %OrderedWith.type.af1: type = facet_type <@OrderedWith, @OrderedWith(%i64)> [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.4dd52d.1: type = fn_type @Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.1, @Cpp.long.as.OrderedWith.impl.d2f(%T.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.8ca727.1: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.4dd52d.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Greater.type.d7e2b0.1: type = fn_type @Cpp.long.as.OrderedWith.impl.Greater.1, @Cpp.long.as.OrderedWith.impl.d2f(%T.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Greater.029602.1: %Cpp.long.as.OrderedWith.impl.Greater.type.d7e2b0.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.085d31.1: type = fn_type @Cpp.long.as.OrderedWith.impl.LessOrEquivalent.1, @Cpp.long.as.OrderedWith.impl.d2f(%T.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.0f4c92.1: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.085d31.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Less.type.431fd2.1: type = fn_type @Cpp.long.as.OrderedWith.impl.Less.1, @Cpp.long.as.OrderedWith.impl.d2f(%T.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Less.458c1e.1: %Cpp.long.as.OrderedWith.impl.Less.type.431fd2.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.4dd52d.2: type = fn_type @Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.2, @Cpp.long.as.OrderedWith.impl.d2f(%T.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.8ca727.2: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.4dd52d.2 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Greater.type.d7e2b0.2: type = fn_type @Cpp.long.as.OrderedWith.impl.Greater.2, @Cpp.long.as.OrderedWith.impl.d2f(%T.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Greater.029602.2: %Cpp.long.as.OrderedWith.impl.Greater.type.d7e2b0.2 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.085d31.2: type = fn_type @Cpp.long.as.OrderedWith.impl.LessOrEquivalent.2, @Cpp.long.as.OrderedWith.impl.d2f(%T.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.0f4c92.2: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.085d31.2 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Less.type.431fd2.2: type = fn_type @Cpp.long.as.OrderedWith.impl.Less.2, @Cpp.long.as.OrderedWith.impl.d2f(%T.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Less.458c1e.2: %Cpp.long.as.OrderedWith.impl.Less.type.431fd2.2 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.e45fd7.1: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.7, @T.as_type.as.OrderedWith.impl.7a0(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.772097.1: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.e45fd7.1 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.341bcf.1: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.7, @T.as_type.as.OrderedWith.impl.7a0(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.249060.1: %T.as_type.as.OrderedWith.impl.Greater.type.341bcf.1 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.9b3e8c.1: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.7, @T.as_type.as.OrderedWith.impl.7a0(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.b513da.1: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.9b3e8c.1 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.354913.1: type = fn_type @T.as_type.as.OrderedWith.impl.Less.7, @T.as_type.as.OrderedWith.impl.7a0(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.0ec126.1: %T.as_type.as.OrderedWith.impl.Less.type.354913.1 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.e45fd7.2: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.8, @T.as_type.as.OrderedWith.impl.7a0(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.772097.2: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.e45fd7.2 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.341bcf.2: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.8, @T.as_type.as.OrderedWith.impl.7a0(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.249060.2: %T.as_type.as.OrderedWith.impl.Greater.type.341bcf.2 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.9b3e8c.2: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.8, @T.as_type.as.OrderedWith.impl.7a0(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.b513da.2: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.9b3e8c.2 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.354913.2: type = fn_type @T.as_type.as.OrderedWith.impl.Less.8, @T.as_type.as.OrderedWith.impl.7a0(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.0ec126.2: %T.as_type.as.OrderedWith.impl.Less.type.354913.2 = struct_value () [symbolic] +// CHECK:STDOUT: %OrderedWith.type.975: type = facet_type <@OrderedWith, @OrderedWith(Core.IntLiteral)> [concrete] +// CHECK:STDOUT: %OrderedWith.impl_witness.ee7: = impl_witness imports.%OrderedWith.impl_witness_table.13e, @T.as_type.as.OrderedWith.impl.7a0(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.de033b.1: type = fn_type @T.as_type.as.OrderedWith.impl.Less.8, @T.as_type.as.OrderedWith.impl.7a0(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.8f6b78.1: %T.as_type.as.OrderedWith.impl.Less.type.de033b.1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.75d39c.1: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.8, @T.as_type.as.OrderedWith.impl.7a0(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.d36d70.1: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.75d39c.1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.11de18.1: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.8, @T.as_type.as.OrderedWith.impl.7a0(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.017256.1: %T.as_type.as.OrderedWith.impl.Greater.type.11de18.1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.1eda94.1: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.8, @T.as_type.as.OrderedWith.impl.7a0(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.6f44e0.1: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.1eda94.1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.de033b.2: type = fn_type @T.as_type.as.OrderedWith.impl.Less.7, @T.as_type.as.OrderedWith.impl.7a0(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.8f6b78.2: %T.as_type.as.OrderedWith.impl.Less.type.de033b.2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.75d39c.2: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.7, @T.as_type.as.OrderedWith.impl.7a0(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.d36d70.2: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.75d39c.2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.11de18.2: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.7, @T.as_type.as.OrderedWith.impl.7a0(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.017256.2: %T.as_type.as.OrderedWith.impl.Greater.type.11de18.2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.1eda94.2: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.7, @T.as_type.as.OrderedWith.impl.7a0(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.6f44e0.2: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.1eda94.2 = struct_value () [concrete] +// CHECK:STDOUT: %OrderedWith.facet.226: %OrderedWith.type.af1 = facet_value %Cpp.long, (%OrderedWith.impl_witness.ee7) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.Less.type.643: type = fn_type @OrderedWith.WithSelf.Less, @OrderedWith.WithSelf(%i64, %OrderedWith.facet.226) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.LessOrEquivalent.type.025: type = fn_type @OrderedWith.WithSelf.LessOrEquivalent, @OrderedWith.WithSelf(%i64, %OrderedWith.facet.226) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.Greater.type.7b6: type = fn_type @OrderedWith.WithSelf.Greater, @OrderedWith.WithSelf(%i64, %OrderedWith.facet.226) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.GreaterOrEquivalent.type.436: type = fn_type @OrderedWith.WithSelf.GreaterOrEquivalent, @OrderedWith.WithSelf(%i64, %OrderedWith.facet.226) [concrete] +// CHECK:STDOUT: %.ffd: type = fn_type_with_self_type %OrderedWith.WithSelf.Greater.type.7b6, %OrderedWith.facet.226 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.specific_fn.17599d.1: = specific_function %T.as_type.as.OrderedWith.impl.Greater.017256.2, @T.as_type.as.OrderedWith.impl.Greater.7(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.specific_fn.17599d.2: = specific_function %T.as_type.as.OrderedWith.impl.Greater.017256.1, @T.as_type.as.OrderedWith.impl.Greater.8(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %.da4: type = fn_type_with_self_type %OrderedWith.WithSelf.Less.type.643, %OrderedWith.facet.226 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.specific_fn.b43576.1: = specific_function %T.as_type.as.OrderedWith.impl.Less.8f6b78.2, @T.as_type.as.OrderedWith.impl.Less.7(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.specific_fn.b43576.2: = specific_function %T.as_type.as.OrderedWith.impl.Less.8f6b78.1, @T.as_type.as.OrderedWith.impl.Less.8(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %.496: type = fn_type_with_self_type %OrderedWith.WithSelf.GreaterOrEquivalent.type.436, %OrderedWith.facet.226 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.0e8d3e.1: = specific_function %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.6f44e0.2, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.7(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.0e8d3e.2: = specific_function %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.6f44e0.1, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.8(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %.fcb: type = fn_type_with_self_type %OrderedWith.WithSelf.LessOrEquivalent.type.025, %OrderedWith.facet.226 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.30cbb1.1: = specific_function %T.as_type.as.OrderedWith.impl.LessOrEquivalent.d36d70.2, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.7(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.30cbb1.2: = specific_function %T.as_type.as.OrderedWith.impl.LessOrEquivalent.d36d70.1, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.8(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %EqWith.impl_witness.dcc: = impl_witness imports.%EqWith.impl_witness_table.dd7, @Cpp.long.as.EqWith.impl.e2d(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.Equal.type.76e71d.1: type = fn_type @Cpp.long.as.EqWith.impl.Equal.2, @Cpp.long.as.EqWith.impl.e2d(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.Equal.3b50c9.1: %Cpp.long.as.EqWith.impl.Equal.type.76e71d.1 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.NotEqual.type.9fc84a.1: type = fn_type @Cpp.long.as.EqWith.impl.NotEqual.2, @Cpp.long.as.EqWith.impl.e2d(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.NotEqual.92f9dd.1: %Cpp.long.as.EqWith.impl.NotEqual.type.9fc84a.1 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.Equal.type.76e71d.2: type = fn_type @Cpp.long.as.EqWith.impl.Equal.1, @Cpp.long.as.EqWith.impl.e2d(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.Equal.3b50c9.2: %Cpp.long.as.EqWith.impl.Equal.type.76e71d.2 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.NotEqual.type.9fc84a.2: type = fn_type @Cpp.long.as.EqWith.impl.NotEqual.1, @Cpp.long.as.EqWith.impl.e2d(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.NotEqual.92f9dd.2: %Cpp.long.as.EqWith.impl.NotEqual.type.9fc84a.2 = struct_value () [concrete] +// CHECK:STDOUT: %EqWith.facet.f85: %EqWith.type.aee = facet_value %Cpp.long, (%EqWith.impl_witness.dcc) [concrete] +// CHECK:STDOUT: %EqWith.WithSelf.Equal.type.c8f: type = fn_type @EqWith.WithSelf.Equal, @EqWith.WithSelf(Core.IntLiteral, %EqWith.facet.f85) [concrete] +// CHECK:STDOUT: %EqWith.WithSelf.NotEqual.type.c7b: type = fn_type @EqWith.WithSelf.NotEqual, @EqWith.WithSelf(Core.IntLiteral, %EqWith.facet.f85) [concrete] +// CHECK:STDOUT: %.fe7: type = fn_type_with_self_type %EqWith.WithSelf.Equal.type.c8f, %EqWith.facet.f85 [concrete] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.Equal.specific_fn.f7b79e.1: = specific_function %Cpp.long.as.EqWith.impl.Equal.3b50c9.2, @Cpp.long.as.EqWith.impl.Equal.1(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.Equal.specific_fn.f7b79e.2: = specific_function %Cpp.long.as.EqWith.impl.Equal.3b50c9.1, @Cpp.long.as.EqWith.impl.Equal.2(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %.f7c: type = fn_type_with_self_type %EqWith.WithSelf.NotEqual.type.c7b, %EqWith.facet.f85 [concrete] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.NotEqual.specific_fn.18e5a1.1: = specific_function %Cpp.long.as.EqWith.impl.NotEqual.92f9dd.2, @Cpp.long.as.EqWith.impl.NotEqual.1(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.NotEqual.specific_fn.18e5a1.2: = specific_function %Cpp.long.as.EqWith.impl.NotEqual.92f9dd.1, @Cpp.long.as.EqWith.impl.NotEqual.2(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %OrderedWith.impl_witness.d99: = impl_witness imports.%OrderedWith.impl_witness_table.afd, @Cpp.long.as.OrderedWith.impl.d2f(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Less.type.e8e281.1: type = fn_type @Cpp.long.as.OrderedWith.impl.Less.2, @Cpp.long.as.OrderedWith.impl.d2f(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Less.e47846.1: %Cpp.long.as.OrderedWith.impl.Less.type.e8e281.1 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.07caf1.1: type = fn_type @Cpp.long.as.OrderedWith.impl.LessOrEquivalent.2, @Cpp.long.as.OrderedWith.impl.d2f(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.1d76f6.1: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.07caf1.1 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Greater.type.803079.1: type = fn_type @Cpp.long.as.OrderedWith.impl.Greater.2, @Cpp.long.as.OrderedWith.impl.d2f(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Greater.f69e67.1: %Cpp.long.as.OrderedWith.impl.Greater.type.803079.1 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.6a2e90.1: type = fn_type @Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.2, @Cpp.long.as.OrderedWith.impl.d2f(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.6badd7.1: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.6a2e90.1 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Less.type.e8e281.2: type = fn_type @Cpp.long.as.OrderedWith.impl.Less.1, @Cpp.long.as.OrderedWith.impl.d2f(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Less.e47846.2: %Cpp.long.as.OrderedWith.impl.Less.type.e8e281.2 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.07caf1.2: type = fn_type @Cpp.long.as.OrderedWith.impl.LessOrEquivalent.1, @Cpp.long.as.OrderedWith.impl.d2f(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.1d76f6.2: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.07caf1.2 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Greater.type.803079.2: type = fn_type @Cpp.long.as.OrderedWith.impl.Greater.1, @Cpp.long.as.OrderedWith.impl.d2f(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Greater.f69e67.2: %Cpp.long.as.OrderedWith.impl.Greater.type.803079.2 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.6a2e90.2: type = fn_type @Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.1, @Cpp.long.as.OrderedWith.impl.d2f(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.6badd7.2: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.6a2e90.2 = struct_value () [concrete] +// CHECK:STDOUT: %OrderedWith.facet.908: %OrderedWith.type.975 = facet_value %Cpp.long, (%OrderedWith.impl_witness.d99) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.Less.type.c5e: type = fn_type @OrderedWith.WithSelf.Less, @OrderedWith.WithSelf(Core.IntLiteral, %OrderedWith.facet.908) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.LessOrEquivalent.type.735: type = fn_type @OrderedWith.WithSelf.LessOrEquivalent, @OrderedWith.WithSelf(Core.IntLiteral, %OrderedWith.facet.908) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.Greater.type.e87: type = fn_type @OrderedWith.WithSelf.Greater, @OrderedWith.WithSelf(Core.IntLiteral, %OrderedWith.facet.908) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.GreaterOrEquivalent.type.951: type = fn_type @OrderedWith.WithSelf.GreaterOrEquivalent, @OrderedWith.WithSelf(Core.IntLiteral, %OrderedWith.facet.908) [concrete] +// CHECK:STDOUT: %.7b2: type = fn_type_with_self_type %OrderedWith.WithSelf.Greater.type.e87, %OrderedWith.facet.908 [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Greater.specific_fn.28a30d.1: = specific_function %Cpp.long.as.OrderedWith.impl.Greater.f69e67.2, @Cpp.long.as.OrderedWith.impl.Greater.1(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Greater.specific_fn.28a30d.2: = specific_function %Cpp.long.as.OrderedWith.impl.Greater.f69e67.1, @Cpp.long.as.OrderedWith.impl.Greater.2(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %.831: type = fn_type_with_self_type %OrderedWith.WithSelf.Less.type.c5e, %OrderedWith.facet.908 [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Less.specific_fn.837d2f.1: = specific_function %Cpp.long.as.OrderedWith.impl.Less.e47846.2, @Cpp.long.as.OrderedWith.impl.Less.1(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Less.specific_fn.837d2f.2: = specific_function %Cpp.long.as.OrderedWith.impl.Less.e47846.1, @Cpp.long.as.OrderedWith.impl.Less.2(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %.9b8: type = fn_type_with_self_type %OrderedWith.WithSelf.GreaterOrEquivalent.type.951, %OrderedWith.facet.908 [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.caf66c.1: = specific_function %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.6badd7.2, @Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.1(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.caf66c.2: = specific_function %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.6badd7.1, @Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.2(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %.1b8: type = fn_type_with_self_type %OrderedWith.WithSelf.LessOrEquivalent.type.735, %OrderedWith.facet.908 [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.specific_fn.cd0cbc.1: = specific_function %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.1d76f6.2, @Cpp.long.as.OrderedWith.impl.LessOrEquivalent.1(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.specific_fn.cd0cbc.2: = specific_function %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.1d76f6.1, @Cpp.long.as.OrderedWith.impl.LessOrEquivalent.2(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { +// CHECK:STDOUT: .long = constants.%Cpp.long +// CHECK:STDOUT: import Cpp//... +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import_ref.06c923.1: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.f73 = impl_witness_table (%Core.import_ref.06c923.1), @Core.IntLiteral.as.ImplicitAs.impl.71b [concrete] +// CHECK:STDOUT: %Core.import_ref.1af: @Cpp.long.as.EqWith.impl.e2d.%Cpp.long.as.EqWith.impl.Equal.type.2 (%Cpp.long.as.EqWith.impl.Equal.type.6a18eb.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.EqWith.impl.e2d.%Cpp.long.as.EqWith.impl.Equal.2 (constants.%Cpp.long.as.EqWith.impl.Equal.ee5c37.1)] +// CHECK:STDOUT: %Core.import_ref.5b6: @Cpp.long.as.EqWith.impl.e2d.%Cpp.long.as.EqWith.impl.NotEqual.type.2 (%Cpp.long.as.EqWith.impl.NotEqual.type.477445.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.EqWith.impl.e2d.%Cpp.long.as.EqWith.impl.NotEqual.2 (constants.%Cpp.long.as.EqWith.impl.NotEqual.367ca8.1)] +// CHECK:STDOUT: %EqWith.impl_witness_table.dd7 = impl_witness_table (%Core.import_ref.1af, %Core.import_ref.5b6), @Cpp.long.as.EqWith.impl.e2d [concrete] +// CHECK:STDOUT: %Core.Equal.94f: @Cpp.long.as.EqWith.impl.e2d.%Cpp.long.as.EqWith.impl.Equal.type.1 (%Cpp.long.as.EqWith.impl.Equal.type.6a18eb.2) = import_ref Core//prelude/types/cpp/int, Equal, loaded [symbolic = @Cpp.long.as.EqWith.impl.e2d.%Cpp.long.as.EqWith.impl.Equal.1 (constants.%Cpp.long.as.EqWith.impl.Equal.ee5c37.2)] +// CHECK:STDOUT: %Core.NotEqual.3eb: @Cpp.long.as.EqWith.impl.e2d.%Cpp.long.as.EqWith.impl.NotEqual.type.1 (%Cpp.long.as.EqWith.impl.NotEqual.type.477445.2) = import_ref Core//prelude/types/cpp/int, NotEqual, loaded [symbolic = @Cpp.long.as.EqWith.impl.e2d.%Cpp.long.as.EqWith.impl.NotEqual.1 (constants.%Cpp.long.as.EqWith.impl.NotEqual.367ca8.2)] +// CHECK:STDOUT: %Core.import_ref.a9a: @T.as_type.as.EqWith.impl.956.%T.as_type.as.EqWith.impl.Equal.type.2 (%T.as_type.as.EqWith.impl.Equal.type.8af025.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.EqWith.impl.956.%T.as_type.as.EqWith.impl.Equal.2 (constants.%T.as_type.as.EqWith.impl.Equal.c477d6.1)] +// CHECK:STDOUT: %Core.import_ref.76a: @T.as_type.as.EqWith.impl.956.%T.as_type.as.EqWith.impl.NotEqual.type.2 (%T.as_type.as.EqWith.impl.NotEqual.type.6de1da.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.EqWith.impl.956.%T.as_type.as.EqWith.impl.NotEqual.2 (constants.%T.as_type.as.EqWith.impl.NotEqual.501deb.1)] +// CHECK:STDOUT: %EqWith.impl_witness_table.561 = impl_witness_table (%Core.import_ref.a9a, %Core.import_ref.76a), @T.as_type.as.EqWith.impl.956 [concrete] +// CHECK:STDOUT: %Core.Equal.970: @T.as_type.as.EqWith.impl.956.%T.as_type.as.EqWith.impl.Equal.type.1 (%T.as_type.as.EqWith.impl.Equal.type.8af025.2) = import_ref Core//prelude/types/int, Equal, loaded [symbolic = @T.as_type.as.EqWith.impl.956.%T.as_type.as.EqWith.impl.Equal.1 (constants.%T.as_type.as.EqWith.impl.Equal.c477d6.2)] +// CHECK:STDOUT: %Core.NotEqual.228: @T.as_type.as.EqWith.impl.956.%T.as_type.as.EqWith.impl.NotEqual.type.1 (%T.as_type.as.EqWith.impl.NotEqual.type.6de1da.2) = import_ref Core//prelude/types/int, NotEqual, loaded [symbolic = @T.as_type.as.EqWith.impl.956.%T.as_type.as.EqWith.impl.NotEqual.1 (constants.%T.as_type.as.EqWith.impl.NotEqual.501deb.2)] +// CHECK:STDOUT: %Core.import_ref.06c923.2: %Cpp.long.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a3a = impl_witness_table (%Core.import_ref.06c923.2), @Cpp.long.as.ImplicitAs.impl.c8d [concrete] +// CHECK:STDOUT: %Core.import_ref.49e: @Cpp.long.as.OrderedWith.impl.d2f.%Cpp.long.as.OrderedWith.impl.Less.type.2 (%Cpp.long.as.OrderedWith.impl.Less.type.431fd2.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.OrderedWith.impl.d2f.%Cpp.long.as.OrderedWith.impl.Less.2 (constants.%Cpp.long.as.OrderedWith.impl.Less.458c1e.1)] +// CHECK:STDOUT: %Core.import_ref.5ef: @Cpp.long.as.OrderedWith.impl.d2f.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.2 (%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.085d31.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.OrderedWith.impl.d2f.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.2 (constants.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.0f4c92.1)] +// CHECK:STDOUT: %Core.import_ref.3459: @Cpp.long.as.OrderedWith.impl.d2f.%Cpp.long.as.OrderedWith.impl.Greater.type.2 (%Cpp.long.as.OrderedWith.impl.Greater.type.d7e2b0.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.OrderedWith.impl.d2f.%Cpp.long.as.OrderedWith.impl.Greater.2 (constants.%Cpp.long.as.OrderedWith.impl.Greater.029602.1)] +// CHECK:STDOUT: %Core.import_ref.ccd: @Cpp.long.as.OrderedWith.impl.d2f.%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.2 (%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.4dd52d.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.OrderedWith.impl.d2f.%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.2 (constants.%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.8ca727.1)] +// CHECK:STDOUT: %OrderedWith.impl_witness_table.afd = impl_witness_table (%Core.import_ref.49e, %Core.import_ref.5ef, %Core.import_ref.3459, %Core.import_ref.ccd), @Cpp.long.as.OrderedWith.impl.d2f [concrete] +// CHECK:STDOUT: %Core.Less.890: @Cpp.long.as.OrderedWith.impl.d2f.%Cpp.long.as.OrderedWith.impl.Less.type.1 (%Cpp.long.as.OrderedWith.impl.Less.type.431fd2.2) = import_ref Core//prelude/types/cpp/int, Less, loaded [symbolic = @Cpp.long.as.OrderedWith.impl.d2f.%Cpp.long.as.OrderedWith.impl.Less.1 (constants.%Cpp.long.as.OrderedWith.impl.Less.458c1e.2)] +// CHECK:STDOUT: %Core.LessOrEquivalent.a1b: @Cpp.long.as.OrderedWith.impl.d2f.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.1 (%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.085d31.2) = import_ref Core//prelude/types/cpp/int, LessOrEquivalent, loaded [symbolic = @Cpp.long.as.OrderedWith.impl.d2f.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.1 (constants.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.0f4c92.2)] +// CHECK:STDOUT: %Core.Greater.bd4: @Cpp.long.as.OrderedWith.impl.d2f.%Cpp.long.as.OrderedWith.impl.Greater.type.1 (%Cpp.long.as.OrderedWith.impl.Greater.type.d7e2b0.2) = import_ref Core//prelude/types/cpp/int, Greater, loaded [symbolic = @Cpp.long.as.OrderedWith.impl.d2f.%Cpp.long.as.OrderedWith.impl.Greater.1 (constants.%Cpp.long.as.OrderedWith.impl.Greater.029602.2)] +// CHECK:STDOUT: %Core.GreaterOrEquivalent.829: @Cpp.long.as.OrderedWith.impl.d2f.%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.1 (%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.4dd52d.2) = import_ref Core//prelude/types/cpp/int, GreaterOrEquivalent, loaded [symbolic = @Cpp.long.as.OrderedWith.impl.d2f.%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.1 (constants.%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.8ca727.2)] +// CHECK:STDOUT: %Core.import_ref.b96: @T.as_type.as.OrderedWith.impl.7a0.%T.as_type.as.OrderedWith.impl.Less.type.2 (%T.as_type.as.OrderedWith.impl.Less.type.354913.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.OrderedWith.impl.7a0.%T.as_type.as.OrderedWith.impl.Less.2 (constants.%T.as_type.as.OrderedWith.impl.Less.0ec126.1)] +// CHECK:STDOUT: %Core.import_ref.870: @T.as_type.as.OrderedWith.impl.7a0.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.2 (%T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.9b3e8c.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.OrderedWith.impl.7a0.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.2 (constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.b513da.1)] +// CHECK:STDOUT: %Core.import_ref.879: @T.as_type.as.OrderedWith.impl.7a0.%T.as_type.as.OrderedWith.impl.Greater.type.2 (%T.as_type.as.OrderedWith.impl.Greater.type.341bcf.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.OrderedWith.impl.7a0.%T.as_type.as.OrderedWith.impl.Greater.2 (constants.%T.as_type.as.OrderedWith.impl.Greater.249060.1)] +// CHECK:STDOUT: %Core.import_ref.9a7: @T.as_type.as.OrderedWith.impl.7a0.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.2 (%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.e45fd7.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.OrderedWith.impl.7a0.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.2 (constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.772097.1)] +// CHECK:STDOUT: %OrderedWith.impl_witness_table.13e = impl_witness_table (%Core.import_ref.b96, %Core.import_ref.870, %Core.import_ref.879, %Core.import_ref.9a7), @T.as_type.as.OrderedWith.impl.7a0 [concrete] +// CHECK:STDOUT: %Core.Less.ccb: @T.as_type.as.OrderedWith.impl.7a0.%T.as_type.as.OrderedWith.impl.Less.type.1 (%T.as_type.as.OrderedWith.impl.Less.type.354913.2) = import_ref Core//prelude/types/int, Less, loaded [symbolic = @T.as_type.as.OrderedWith.impl.7a0.%T.as_type.as.OrderedWith.impl.Less.1 (constants.%T.as_type.as.OrderedWith.impl.Less.0ec126.2)] +// CHECK:STDOUT: %Core.LessOrEquivalent.cbb: @T.as_type.as.OrderedWith.impl.7a0.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.1 (%T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.9b3e8c.2) = import_ref Core//prelude/types/int, LessOrEquivalent, loaded [symbolic = @T.as_type.as.OrderedWith.impl.7a0.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.1 (constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.b513da.2)] +// CHECK:STDOUT: %Core.Greater.a52: @T.as_type.as.OrderedWith.impl.7a0.%T.as_type.as.OrderedWith.impl.Greater.type.1 (%T.as_type.as.OrderedWith.impl.Greater.type.341bcf.2) = import_ref Core//prelude/types/int, Greater, loaded [symbolic = @T.as_type.as.OrderedWith.impl.7a0.%T.as_type.as.OrderedWith.impl.Greater.1 (constants.%T.as_type.as.OrderedWith.impl.Greater.249060.2)] +// CHECK:STDOUT: %Core.GreaterOrEquivalent.a3d: @T.as_type.as.OrderedWith.impl.7a0.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.1 (%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.e45fd7.2) = import_ref Core//prelude/types/int, GreaterOrEquivalent, loaded [symbolic = @T.as_type.as.OrderedWith.impl.7a0.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.1 (constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.772097.2)] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @ComparisonsHeterogeneousLongLeftSide() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: +// CHECK:STDOUT: %int_1.loc9: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc9: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc9: = bound_method %int_1.loc9, %impl.elem0.loc9 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9: init %Cpp.long = call %bound_method.loc9(%int_1.loc9) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc9_21.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc9_21.2: %Cpp.long = converted %int_1.loc9, %.loc9_21.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc9_13: type = splice_block %long.ref [concrete = constants.%Cpp.long] { +// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %long.ref: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a: %Cpp.long = wrapper_binding a, %.loc9_21.2 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %a.patt: %pattern_type.ada = value_binding_pattern a [concrete = constants.%a.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a.ref.loc10: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc10: %i64 = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc10_5: %.da9 = impl_witness_access constants.%EqWith.impl_witness.53b, element0 [concrete = constants.%T.as_type.as.EqWith.impl.Equal.c936a0.2] +// CHECK:STDOUT: %bound_method.loc10_5.1: = bound_method %a.ref.loc10, %impl.elem0.loc10_5 +// CHECK:STDOUT: %specific_fn.loc10: = specific_function %impl.elem0.loc10_5, @T.as_type.as.EqWith.impl.Equal.7(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%T.as_type.as.EqWith.impl.Equal.specific_fn.cba536.1] +// CHECK:STDOUT: %bound_method.loc10_5.2: = bound_method %a.ref.loc10, %specific_fn.loc10 +// CHECK:STDOUT: %.loc10_5: %T.as_type.as.EqWith.impl.Equal.type.9269d3.1 = specific_constant imports.%Core.Equal.970, @T.as_type.as.EqWith.impl.956(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%T.as_type.as.EqWith.impl.Equal.c936a0.1] +// CHECK:STDOUT: %Equal.ref.loc10: %T.as_type.as.EqWith.impl.Equal.type.9269d3.1 = name_ref Equal, %.loc10_5 [concrete = constants.%T.as_type.as.EqWith.impl.Equal.c936a0.1] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.bound: = bound_method %a.ref.loc10, %Equal.ref.loc10 +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.specific_fn: = specific_function %Equal.ref.loc10, @T.as_type.as.EqWith.impl.Equal.8(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%T.as_type.as.EqWith.impl.Equal.specific_fn.cba536.2] +// CHECK:STDOUT: %bound_method.loc10_5.3: = bound_method %a.ref.loc10, %T.as_type.as.EqWith.impl.Equal.specific_fn +// CHECK:STDOUT: %impl.elem0.loc10_3: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc10_3: = bound_method %a.ref.loc10, %impl.elem0.loc10_3 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc10: init %i64 = call %bound_method.loc10_3(%a.ref.loc10) +// CHECK:STDOUT: %.loc10_3.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc10 +// CHECK:STDOUT: %.loc10_3.2: %i64 = converted %a.ref.loc10, %.loc10_3.1 +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.call: init bool = call %bound_method.loc10_5.3(%.loc10_3.2, %b.ref.loc10) +// CHECK:STDOUT: %a.ref.loc11: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc11: %i64 = name_ref b, %b +// CHECK:STDOUT: %impl.elem1.loc11: %.b06 = impl_witness_access constants.%EqWith.impl_witness.53b, element1 [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.44eea9.2] +// CHECK:STDOUT: %bound_method.loc11_5.1: = bound_method %a.ref.loc11, %impl.elem1.loc11 +// CHECK:STDOUT: %specific_fn.loc11: = specific_function %impl.elem1.loc11, @T.as_type.as.EqWith.impl.NotEqual.7(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.specific_fn.228325.1] +// CHECK:STDOUT: %bound_method.loc11_5.2: = bound_method %a.ref.loc11, %specific_fn.loc11 +// CHECK:STDOUT: %.loc11_5: %T.as_type.as.EqWith.impl.NotEqual.type.8585e2.1 = specific_constant imports.%Core.NotEqual.228, @T.as_type.as.EqWith.impl.956(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.44eea9.1] +// CHECK:STDOUT: %NotEqual.ref.loc11: %T.as_type.as.EqWith.impl.NotEqual.type.8585e2.1 = name_ref NotEqual, %.loc11_5 [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.44eea9.1] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.bound: = bound_method %a.ref.loc11, %NotEqual.ref.loc11 +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.specific_fn: = specific_function %NotEqual.ref.loc11, @T.as_type.as.EqWith.impl.NotEqual.8(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.specific_fn.228325.2] +// CHECK:STDOUT: %bound_method.loc11_5.3: = bound_method %a.ref.loc11, %T.as_type.as.EqWith.impl.NotEqual.specific_fn +// CHECK:STDOUT: %impl.elem0.loc11: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc11_3: = bound_method %a.ref.loc11, %impl.elem0.loc11 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc11: init %i64 = call %bound_method.loc11_3(%a.ref.loc11) +// CHECK:STDOUT: %.loc11_3.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc11 +// CHECK:STDOUT: %.loc11_3.2: %i64 = converted %a.ref.loc11, %.loc11_3.1 +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.call: init bool = call %bound_method.loc11_5.3(%.loc11_3.2, %b.ref.loc11) +// CHECK:STDOUT: %a.ref.loc12: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc12: %i64 = name_ref b, %b +// CHECK:STDOUT: %impl.elem2.loc12: %.ffd = impl_witness_access constants.%OrderedWith.impl_witness.ee7, element2 [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.017256.2] +// CHECK:STDOUT: %bound_method.loc12_5.1: = bound_method %a.ref.loc12, %impl.elem2.loc12 +// CHECK:STDOUT: %specific_fn.loc12: = specific_function %impl.elem2.loc12, @T.as_type.as.OrderedWith.impl.Greater.7(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.specific_fn.17599d.1] +// CHECK:STDOUT: %bound_method.loc12_5.2: = bound_method %a.ref.loc12, %specific_fn.loc12 +// CHECK:STDOUT: %.loc12_5: %T.as_type.as.OrderedWith.impl.Greater.type.11de18.1 = specific_constant imports.%Core.Greater.a52, @T.as_type.as.OrderedWith.impl.7a0(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.017256.1] +// CHECK:STDOUT: %Greater.ref.loc12: %T.as_type.as.OrderedWith.impl.Greater.type.11de18.1 = name_ref Greater, %.loc12_5 [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.017256.1] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.bound: = bound_method %a.ref.loc12, %Greater.ref.loc12 +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.specific_fn: = specific_function %Greater.ref.loc12, @T.as_type.as.OrderedWith.impl.Greater.8(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.specific_fn.17599d.2] +// CHECK:STDOUT: %bound_method.loc12_5.3: = bound_method %a.ref.loc12, %T.as_type.as.OrderedWith.impl.Greater.specific_fn +// CHECK:STDOUT: %impl.elem0.loc12: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc12_3: = bound_method %a.ref.loc12, %impl.elem0.loc12 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc12: init %i64 = call %bound_method.loc12_3(%a.ref.loc12) +// CHECK:STDOUT: %.loc12_3.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc12 +// CHECK:STDOUT: %.loc12_3.2: %i64 = converted %a.ref.loc12, %.loc12_3.1 +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.call: init bool = call %bound_method.loc12_5.3(%.loc12_3.2, %b.ref.loc12) +// CHECK:STDOUT: %a.ref.loc13: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc13: %i64 = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc13_5: %.da4 = impl_witness_access constants.%OrderedWith.impl_witness.ee7, element0 [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.8f6b78.2] +// CHECK:STDOUT: %bound_method.loc13_5.1: = bound_method %a.ref.loc13, %impl.elem0.loc13_5 +// CHECK:STDOUT: %specific_fn.loc13: = specific_function %impl.elem0.loc13_5, @T.as_type.as.OrderedWith.impl.Less.7(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.specific_fn.b43576.1] +// CHECK:STDOUT: %bound_method.loc13_5.2: = bound_method %a.ref.loc13, %specific_fn.loc13 +// CHECK:STDOUT: %.loc13_5: %T.as_type.as.OrderedWith.impl.Less.type.de033b.1 = specific_constant imports.%Core.Less.ccb, @T.as_type.as.OrderedWith.impl.7a0(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.8f6b78.1] +// CHECK:STDOUT: %Less.ref.loc13: %T.as_type.as.OrderedWith.impl.Less.type.de033b.1 = name_ref Less, %.loc13_5 [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.8f6b78.1] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.bound: = bound_method %a.ref.loc13, %Less.ref.loc13 +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.specific_fn: = specific_function %Less.ref.loc13, @T.as_type.as.OrderedWith.impl.Less.8(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.specific_fn.b43576.2] +// CHECK:STDOUT: %bound_method.loc13_5.3: = bound_method %a.ref.loc13, %T.as_type.as.OrderedWith.impl.Less.specific_fn +// CHECK:STDOUT: %impl.elem0.loc13_3: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc13_3: = bound_method %a.ref.loc13, %impl.elem0.loc13_3 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc13: init %i64 = call %bound_method.loc13_3(%a.ref.loc13) +// CHECK:STDOUT: %.loc13_3.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc13 +// CHECK:STDOUT: %.loc13_3.2: %i64 = converted %a.ref.loc13, %.loc13_3.1 +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.call: init bool = call %bound_method.loc13_5.3(%.loc13_3.2, %b.ref.loc13) +// CHECK:STDOUT: %a.ref.loc14: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc14: %i64 = name_ref b, %b +// CHECK:STDOUT: %impl.elem3.loc14: %.496 = impl_witness_access constants.%OrderedWith.impl_witness.ee7, element3 [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.6f44e0.2] +// CHECK:STDOUT: %bound_method.loc14_5.1: = bound_method %a.ref.loc14, %impl.elem3.loc14 +// CHECK:STDOUT: %specific_fn.loc14: = specific_function %impl.elem3.loc14, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.7(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.0e8d3e.1] +// CHECK:STDOUT: %bound_method.loc14_5.2: = bound_method %a.ref.loc14, %specific_fn.loc14 +// CHECK:STDOUT: %.loc14_5: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.1eda94.1 = specific_constant imports.%Core.GreaterOrEquivalent.a3d, @T.as_type.as.OrderedWith.impl.7a0(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.6f44e0.1] +// CHECK:STDOUT: %GreaterOrEquivalent.ref.loc14: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.1eda94.1 = name_ref GreaterOrEquivalent, %.loc14_5 [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.6f44e0.1] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.bound: = bound_method %a.ref.loc14, %GreaterOrEquivalent.ref.loc14 +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn: = specific_function %GreaterOrEquivalent.ref.loc14, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.8(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.0e8d3e.2] +// CHECK:STDOUT: %bound_method.loc14_5.3: = bound_method %a.ref.loc14, %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn +// CHECK:STDOUT: %impl.elem0.loc14: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc14_3: = bound_method %a.ref.loc14, %impl.elem0.loc14 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc14: init %i64 = call %bound_method.loc14_3(%a.ref.loc14) +// CHECK:STDOUT: %.loc14_3.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc14 +// CHECK:STDOUT: %.loc14_3.2: %i64 = converted %a.ref.loc14, %.loc14_3.1 +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.call: init bool = call %bound_method.loc14_5.3(%.loc14_3.2, %b.ref.loc14) +// CHECK:STDOUT: %a.ref.loc15: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc15: %i64 = name_ref b, %b +// CHECK:STDOUT: %impl.elem1.loc15: %.fcb = impl_witness_access constants.%OrderedWith.impl_witness.ee7, element1 [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.d36d70.2] +// CHECK:STDOUT: %bound_method.loc15_5.1: = bound_method %a.ref.loc15, %impl.elem1.loc15 +// CHECK:STDOUT: %specific_fn.loc15: = specific_function %impl.elem1.loc15, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.7(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.30cbb1.1] +// CHECK:STDOUT: %bound_method.loc15_5.2: = bound_method %a.ref.loc15, %specific_fn.loc15 +// CHECK:STDOUT: %.loc15_5: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.75d39c.1 = specific_constant imports.%Core.LessOrEquivalent.cbb, @T.as_type.as.OrderedWith.impl.7a0(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.d36d70.1] +// CHECK:STDOUT: %LessOrEquivalent.ref.loc15: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.75d39c.1 = name_ref LessOrEquivalent, %.loc15_5 [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.d36d70.1] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.bound: = bound_method %a.ref.loc15, %LessOrEquivalent.ref.loc15 +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn: = specific_function %LessOrEquivalent.ref.loc15, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.8(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.30cbb1.2] +// CHECK:STDOUT: %bound_method.loc15_5.3: = bound_method %a.ref.loc15, %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn +// CHECK:STDOUT: %impl.elem0.loc15: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc15_3: = bound_method %a.ref.loc15, %impl.elem0.loc15 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc15: init %i64 = call %bound_method.loc15_3(%a.ref.loc15) +// CHECK:STDOUT: %.loc15_3.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc15 +// CHECK:STDOUT: %.loc15_3.2: %i64 = converted %a.ref.loc15, %.loc15_3.1 +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.call: init bool = call %bound_method.loc15_5.3(%.loc15_3.2, %b.ref.loc15) +// CHECK:STDOUT: %a.ref.loc17: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %int_1.loc17: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc17_5: %.fe7 = impl_witness_access constants.%EqWith.impl_witness.dcc, element0 [concrete = constants.%Cpp.long.as.EqWith.impl.Equal.3b50c9.2] +// CHECK:STDOUT: %bound_method.loc17_5.1: = bound_method %a.ref.loc17, %impl.elem0.loc17_5 +// CHECK:STDOUT: %ImplicitAs.facet.loc17_5.1: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc17_5.1: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc17_5.1 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %ImplicitAs.facet.loc17_5.2: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc17_5.2: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc17_5.2 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %specific_fn.loc17: = specific_function %impl.elem0.loc17_5, @Cpp.long.as.EqWith.impl.Equal.1(constants.%ImplicitAs.facet.210) [concrete = constants.%Cpp.long.as.EqWith.impl.Equal.specific_fn.f7b79e.1] +// CHECK:STDOUT: %bound_method.loc17_5.2: = bound_method %a.ref.loc17, %specific_fn.loc17 +// CHECK:STDOUT: %.loc17_5.3: %Cpp.long.as.EqWith.impl.Equal.type.76e71d.1 = specific_constant imports.%Core.Equal.94f, @Cpp.long.as.EqWith.impl.e2d(constants.%ImplicitAs.facet.210) [concrete = constants.%Cpp.long.as.EqWith.impl.Equal.3b50c9.1] +// CHECK:STDOUT: %Equal.ref.loc17: %Cpp.long.as.EqWith.impl.Equal.type.76e71d.1 = name_ref Equal, %.loc17_5.3 [concrete = constants.%Cpp.long.as.EqWith.impl.Equal.3b50c9.1] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.Equal.bound: = bound_method %a.ref.loc17, %Equal.ref.loc17 +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.Equal.specific_fn: = specific_function %Equal.ref.loc17, @Cpp.long.as.EqWith.impl.Equal.2(constants.%ImplicitAs.facet.210) [concrete = constants.%Cpp.long.as.EqWith.impl.Equal.specific_fn.f7b79e.2] +// CHECK:STDOUT: %bound_method.loc17_5.3: = bound_method %a.ref.loc17, %Cpp.long.as.EqWith.impl.Equal.specific_fn +// CHECK:STDOUT: %impl.elem0.loc17_8: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc17_8: = bound_method %int_1.loc17, %impl.elem0.loc17_8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17: init %Cpp.long = call %bound_method.loc17_8(%int_1.loc17) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc17_8.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc17_8.2: %Cpp.long = converted %int_1.loc17, %.loc17_8.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.Equal.call: init bool = call %bound_method.loc17_5.3(%a.ref.loc17, %.loc17_8.2) +// CHECK:STDOUT: %a.ref.loc18: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %int_1.loc18: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem1.loc18: %.f7c = impl_witness_access constants.%EqWith.impl_witness.dcc, element1 [concrete = constants.%Cpp.long.as.EqWith.impl.NotEqual.92f9dd.2] +// CHECK:STDOUT: %bound_method.loc18_5.1: = bound_method %a.ref.loc18, %impl.elem1.loc18 +// CHECK:STDOUT: %ImplicitAs.facet.loc18_5.1: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc18_5.1: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc18_5.1 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %ImplicitAs.facet.loc18_5.2: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc18_5.2: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc18_5.2 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %specific_fn.loc18: = specific_function %impl.elem1.loc18, @Cpp.long.as.EqWith.impl.NotEqual.1(constants.%ImplicitAs.facet.210) [concrete = constants.%Cpp.long.as.EqWith.impl.NotEqual.specific_fn.18e5a1.1] +// CHECK:STDOUT: %bound_method.loc18_5.2: = bound_method %a.ref.loc18, %specific_fn.loc18 +// CHECK:STDOUT: %.loc18_5.3: %Cpp.long.as.EqWith.impl.NotEqual.type.9fc84a.1 = specific_constant imports.%Core.NotEqual.3eb, @Cpp.long.as.EqWith.impl.e2d(constants.%ImplicitAs.facet.210) [concrete = constants.%Cpp.long.as.EqWith.impl.NotEqual.92f9dd.1] +// CHECK:STDOUT: %NotEqual.ref.loc18: %Cpp.long.as.EqWith.impl.NotEqual.type.9fc84a.1 = name_ref NotEqual, %.loc18_5.3 [concrete = constants.%Cpp.long.as.EqWith.impl.NotEqual.92f9dd.1] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.NotEqual.bound: = bound_method %a.ref.loc18, %NotEqual.ref.loc18 +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.NotEqual.specific_fn: = specific_function %NotEqual.ref.loc18, @Cpp.long.as.EqWith.impl.NotEqual.2(constants.%ImplicitAs.facet.210) [concrete = constants.%Cpp.long.as.EqWith.impl.NotEqual.specific_fn.18e5a1.2] +// CHECK:STDOUT: %bound_method.loc18_5.3: = bound_method %a.ref.loc18, %Cpp.long.as.EqWith.impl.NotEqual.specific_fn +// CHECK:STDOUT: %impl.elem0.loc18: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc18_8: = bound_method %int_1.loc18, %impl.elem0.loc18 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18: init %Cpp.long = call %bound_method.loc18_8(%int_1.loc18) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc18_8.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc18_8.2: %Cpp.long = converted %int_1.loc18, %.loc18_8.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %Cpp.long.as.EqWith.impl.NotEqual.call: init bool = call %bound_method.loc18_5.3(%a.ref.loc18, %.loc18_8.2) +// CHECK:STDOUT: %a.ref.loc19: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %int_1.loc19: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem2.loc19: %.7b2 = impl_witness_access constants.%OrderedWith.impl_witness.d99, element2 [concrete = constants.%Cpp.long.as.OrderedWith.impl.Greater.f69e67.2] +// CHECK:STDOUT: %bound_method.loc19_5.1: = bound_method %a.ref.loc19, %impl.elem2.loc19 +// CHECK:STDOUT: %ImplicitAs.facet.loc19_5.1: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc19_5.1: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc19_5.1 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %ImplicitAs.facet.loc19_5.2: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc19_5.2: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc19_5.2 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %specific_fn.loc19: = specific_function %impl.elem2.loc19, @Cpp.long.as.OrderedWith.impl.Greater.1(constants.%ImplicitAs.facet.210) [concrete = constants.%Cpp.long.as.OrderedWith.impl.Greater.specific_fn.28a30d.1] +// CHECK:STDOUT: %bound_method.loc19_5.2: = bound_method %a.ref.loc19, %specific_fn.loc19 +// CHECK:STDOUT: %.loc19_5.3: %Cpp.long.as.OrderedWith.impl.Greater.type.803079.1 = specific_constant imports.%Core.Greater.bd4, @Cpp.long.as.OrderedWith.impl.d2f(constants.%ImplicitAs.facet.210) [concrete = constants.%Cpp.long.as.OrderedWith.impl.Greater.f69e67.1] +// CHECK:STDOUT: %Greater.ref.loc19: %Cpp.long.as.OrderedWith.impl.Greater.type.803079.1 = name_ref Greater, %.loc19_5.3 [concrete = constants.%Cpp.long.as.OrderedWith.impl.Greater.f69e67.1] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Greater.bound: = bound_method %a.ref.loc19, %Greater.ref.loc19 +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Greater.specific_fn: = specific_function %Greater.ref.loc19, @Cpp.long.as.OrderedWith.impl.Greater.2(constants.%ImplicitAs.facet.210) [concrete = constants.%Cpp.long.as.OrderedWith.impl.Greater.specific_fn.28a30d.2] +// CHECK:STDOUT: %bound_method.loc19_5.3: = bound_method %a.ref.loc19, %Cpp.long.as.OrderedWith.impl.Greater.specific_fn +// CHECK:STDOUT: %impl.elem0.loc19: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc19_7: = bound_method %int_1.loc19, %impl.elem0.loc19 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19: init %Cpp.long = call %bound_method.loc19_7(%int_1.loc19) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc19_7.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc19_7.2: %Cpp.long = converted %int_1.loc19, %.loc19_7.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Greater.call: init bool = call %bound_method.loc19_5.3(%a.ref.loc19, %.loc19_7.2) +// CHECK:STDOUT: %a.ref.loc20: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %int_1.loc20: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc20_5: %.831 = impl_witness_access constants.%OrderedWith.impl_witness.d99, element0 [concrete = constants.%Cpp.long.as.OrderedWith.impl.Less.e47846.2] +// CHECK:STDOUT: %bound_method.loc20_5.1: = bound_method %a.ref.loc20, %impl.elem0.loc20_5 +// CHECK:STDOUT: %ImplicitAs.facet.loc20_5.1: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc20_5.1: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc20_5.1 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %ImplicitAs.facet.loc20_5.2: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc20_5.2: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc20_5.2 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20_5, @Cpp.long.as.OrderedWith.impl.Less.1(constants.%ImplicitAs.facet.210) [concrete = constants.%Cpp.long.as.OrderedWith.impl.Less.specific_fn.837d2f.1] +// CHECK:STDOUT: %bound_method.loc20_5.2: = bound_method %a.ref.loc20, %specific_fn.loc20 +// CHECK:STDOUT: %.loc20_5.3: %Cpp.long.as.OrderedWith.impl.Less.type.e8e281.1 = specific_constant imports.%Core.Less.890, @Cpp.long.as.OrderedWith.impl.d2f(constants.%ImplicitAs.facet.210) [concrete = constants.%Cpp.long.as.OrderedWith.impl.Less.e47846.1] +// CHECK:STDOUT: %Less.ref.loc20: %Cpp.long.as.OrderedWith.impl.Less.type.e8e281.1 = name_ref Less, %.loc20_5.3 [concrete = constants.%Cpp.long.as.OrderedWith.impl.Less.e47846.1] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Less.bound: = bound_method %a.ref.loc20, %Less.ref.loc20 +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Less.specific_fn: = specific_function %Less.ref.loc20, @Cpp.long.as.OrderedWith.impl.Less.2(constants.%ImplicitAs.facet.210) [concrete = constants.%Cpp.long.as.OrderedWith.impl.Less.specific_fn.837d2f.2] +// CHECK:STDOUT: %bound_method.loc20_5.3: = bound_method %a.ref.loc20, %Cpp.long.as.OrderedWith.impl.Less.specific_fn +// CHECK:STDOUT: %impl.elem0.loc20_7: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc20_7: = bound_method %int_1.loc20, %impl.elem0.loc20_7 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20: init %Cpp.long = call %bound_method.loc20_7(%int_1.loc20) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc20_7.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc20_7.2: %Cpp.long = converted %int_1.loc20, %.loc20_7.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.Less.call: init bool = call %bound_method.loc20_5.3(%a.ref.loc20, %.loc20_7.2) +// CHECK:STDOUT: %a.ref.loc21: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %int_1.loc21: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem3.loc21: %.9b8 = impl_witness_access constants.%OrderedWith.impl_witness.d99, element3 [concrete = constants.%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.6badd7.2] +// CHECK:STDOUT: %bound_method.loc21_5.1: = bound_method %a.ref.loc21, %impl.elem3.loc21 +// CHECK:STDOUT: %ImplicitAs.facet.loc21_5.1: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc21_5.1: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc21_5.1 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %ImplicitAs.facet.loc21_5.2: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc21_5.2: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc21_5.2 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem3.loc21, @Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.1(constants.%ImplicitAs.facet.210) [concrete = constants.%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.caf66c.1] +// CHECK:STDOUT: %bound_method.loc21_5.2: = bound_method %a.ref.loc21, %specific_fn.loc21 +// CHECK:STDOUT: %.loc21_5.3: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.6a2e90.1 = specific_constant imports.%Core.GreaterOrEquivalent.829, @Cpp.long.as.OrderedWith.impl.d2f(constants.%ImplicitAs.facet.210) [concrete = constants.%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.6badd7.1] +// CHECK:STDOUT: %GreaterOrEquivalent.ref.loc21: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.6a2e90.1 = name_ref GreaterOrEquivalent, %.loc21_5.3 [concrete = constants.%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.6badd7.1] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.bound: = bound_method %a.ref.loc21, %GreaterOrEquivalent.ref.loc21 +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn: = specific_function %GreaterOrEquivalent.ref.loc21, @Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.2(constants.%ImplicitAs.facet.210) [concrete = constants.%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.caf66c.2] +// CHECK:STDOUT: %bound_method.loc21_5.3: = bound_method %a.ref.loc21, %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn +// CHECK:STDOUT: %impl.elem0.loc21: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc21_8: = bound_method %int_1.loc21, %impl.elem0.loc21 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21: init %Cpp.long = call %bound_method.loc21_8(%int_1.loc21) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc21_8.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc21_8.2: %Cpp.long = converted %int_1.loc21, %.loc21_8.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.call: init bool = call %bound_method.loc21_5.3(%a.ref.loc21, %.loc21_8.2) +// CHECK:STDOUT: %a.ref.loc22: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %int_1.loc22: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem1.loc22: %.1b8 = impl_witness_access constants.%OrderedWith.impl_witness.d99, element1 [concrete = constants.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.1d76f6.2] +// CHECK:STDOUT: %bound_method.loc22_5.1: = bound_method %a.ref.loc22, %impl.elem1.loc22 +// CHECK:STDOUT: %ImplicitAs.facet.loc22_5.1: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc22_5.1: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc22_5.1 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %ImplicitAs.facet.loc22_5.2: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc22_5.2: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc22_5.2 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem1.loc22, @Cpp.long.as.OrderedWith.impl.LessOrEquivalent.1(constants.%ImplicitAs.facet.210) [concrete = constants.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.specific_fn.cd0cbc.1] +// CHECK:STDOUT: %bound_method.loc22_5.2: = bound_method %a.ref.loc22, %specific_fn.loc22 +// CHECK:STDOUT: %.loc22_5.3: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.07caf1.1 = specific_constant imports.%Core.LessOrEquivalent.a1b, @Cpp.long.as.OrderedWith.impl.d2f(constants.%ImplicitAs.facet.210) [concrete = constants.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.1d76f6.1] +// CHECK:STDOUT: %LessOrEquivalent.ref.loc22: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.07caf1.1 = name_ref LessOrEquivalent, %.loc22_5.3 [concrete = constants.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.1d76f6.1] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.bound: = bound_method %a.ref.loc22, %LessOrEquivalent.ref.loc22 +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.specific_fn: = specific_function %LessOrEquivalent.ref.loc22, @Cpp.long.as.OrderedWith.impl.LessOrEquivalent.2(constants.%ImplicitAs.facet.210) [concrete = constants.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.specific_fn.cd0cbc.2] +// CHECK:STDOUT: %bound_method.loc22_5.3: = bound_method %a.ref.loc22, %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.specific_fn +// CHECK:STDOUT: %impl.elem0.loc22: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc22_8: = bound_method %int_1.loc22, %impl.elem0.loc22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22: init %Cpp.long = call %bound_method.loc22_8(%int_1.loc22) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc22_8.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc22_8.2: %Cpp.long = converted %int_1.loc22, %.loc22_8.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.call: init bool = call %bound_method.loc22_5.3(%a.ref.loc22, %.loc22_8.2) +// CHECK:STDOUT: +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- comparisons_heterogeneous_long_right_side.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] +// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] +// CHECK:STDOUT: %Int.67af24.1: type = class_type @Int, @Int(%N) [symbolic] +// CHECK:STDOUT: %i64: type = class_type @Int, @Int(%int_64) [concrete] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.221: type = facet_type <@ImplicitAs, @ImplicitAs(%i64)> [concrete] +// CHECK:STDOUT: %Cpp.long: type = class_type @Long64 [concrete] +// CHECK:STDOUT: %pattern_type.ada: type = pattern_type %Cpp.long [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.ada = value_binding_pattern a [concrete] +// CHECK:STDOUT: %ImplicitAs.type.340: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long)> [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.5a7: = impl_witness imports.%ImplicitAs.impl_witness_table.f73 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.210: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.5a7) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.562: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Cpp.long, %ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %.6dd: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.562, %ImplicitAs.facet.210 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce [concrete] +// CHECK:STDOUT: %int_1.33f: %Cpp.long = int_value 1 [concrete] +// CHECK:STDOUT: %EqWith.type.3ed: type = facet_type <@EqWith, @EqWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %T.1ae: %ImplicitAs.type.340 = symbolic_binding T, 0 [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.4349fe.1: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.3, @T.as_type.as.EqWith.impl.7e7(%T.1ae) [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.50a028.1: %T.as_type.as.EqWith.impl.NotEqual.type.4349fe.1 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.f384d8.1: type = fn_type @T.as_type.as.EqWith.impl.Equal.3, @T.as_type.as.EqWith.impl.7e7(%T.1ae) [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.99b5a3.1: %T.as_type.as.EqWith.impl.Equal.type.f384d8.1 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.4349fe.2: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.4, @T.as_type.as.EqWith.impl.7e7(%T.1ae) [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.50a028.2: %T.as_type.as.EqWith.impl.NotEqual.type.4349fe.2 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.f384d8.2: type = fn_type @T.as_type.as.EqWith.impl.Equal.4, @T.as_type.as.EqWith.impl.7e7(%T.1ae) [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.99b5a3.2: %T.as_type.as.EqWith.impl.Equal.type.f384d8.2 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.f7de31.2: type = facet_type <@ImplicitAs, @ImplicitAs(%Int.67af24.1)> [symbolic] +// CHECK:STDOUT: %T.4e6: %ImplicitAs.type.f7de31.2 = symbolic_binding T, 1 [symbolic] +// CHECK:STDOUT: %Int.as.EqWith.impl.NotEqual.type.97ec42.1: type = fn_type @Int.as.EqWith.impl.NotEqual.2, @Int.as.EqWith.impl.2b8(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.EqWith.impl.NotEqual.c6c584.1: %Int.as.EqWith.impl.NotEqual.type.97ec42.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.EqWith.impl.Equal.type.c9381b.1: type = fn_type @Int.as.EqWith.impl.Equal.2, @Int.as.EqWith.impl.2b8(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.EqWith.impl.Equal.a4cb34.1: %Int.as.EqWith.impl.Equal.type.c9381b.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.EqWith.impl.NotEqual.type.97ec42.2: type = fn_type @Int.as.EqWith.impl.NotEqual.3, @Int.as.EqWith.impl.2b8(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.EqWith.impl.NotEqual.c6c584.2: %Int.as.EqWith.impl.NotEqual.type.97ec42.2 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.EqWith.impl.Equal.type.c9381b.2: type = fn_type @Int.as.EqWith.impl.Equal.3, @Int.as.EqWith.impl.2b8(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.EqWith.impl.Equal.a4cb34.2: %Int.as.EqWith.impl.Equal.type.c9381b.2 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.43c: = impl_witness imports.%ImplicitAs.impl_witness_table.a3a [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.c71: %ImplicitAs.type.221 = facet_value %Cpp.long, (%ImplicitAs.impl_witness.43c) [concrete] +// CHECK:STDOUT: %EqWith.impl_witness.c6b: = impl_witness imports.%EqWith.impl_witness_table.d4a, @Int.as.EqWith.impl.2b8(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.EqWith.impl.Equal.type.5ee80b.1: type = fn_type @Int.as.EqWith.impl.Equal.3, @Int.as.EqWith.impl.2b8(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.EqWith.impl.Equal.6fef86.1: %Int.as.EqWith.impl.Equal.type.5ee80b.1 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.EqWith.impl.NotEqual.type.3ca782.1: type = fn_type @Int.as.EqWith.impl.NotEqual.3, @Int.as.EqWith.impl.2b8(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.EqWith.impl.NotEqual.c74654.1: %Int.as.EqWith.impl.NotEqual.type.3ca782.1 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.EqWith.impl.Equal.type.5ee80b.2: type = fn_type @Int.as.EqWith.impl.Equal.2, @Int.as.EqWith.impl.2b8(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.EqWith.impl.Equal.6fef86.2: %Int.as.EqWith.impl.Equal.type.5ee80b.2 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.EqWith.impl.NotEqual.type.3ca782.2: type = fn_type @Int.as.EqWith.impl.NotEqual.2, @Int.as.EqWith.impl.2b8(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.EqWith.impl.NotEqual.c74654.2: %Int.as.EqWith.impl.NotEqual.type.3ca782.2 = struct_value () [concrete] +// CHECK:STDOUT: %EqWith.facet.685: %EqWith.type.3ed = facet_value %i64, (%EqWith.impl_witness.c6b) [concrete] +// CHECK:STDOUT: %EqWith.WithSelf.Equal.type.83c: type = fn_type @EqWith.WithSelf.Equal, @EqWith.WithSelf(%Cpp.long, %EqWith.facet.685) [concrete] +// CHECK:STDOUT: %EqWith.WithSelf.NotEqual.type.dc2: type = fn_type @EqWith.WithSelf.NotEqual, @EqWith.WithSelf(%Cpp.long, %EqWith.facet.685) [concrete] +// CHECK:STDOUT: %.b68: type = fn_type_with_self_type %EqWith.WithSelf.Equal.type.83c, %EqWith.facet.685 [concrete] +// CHECK:STDOUT: %Int.as.EqWith.impl.Equal.specific_fn.1d8cd8.1: = specific_function %Int.as.EqWith.impl.Equal.6fef86.2, @Int.as.EqWith.impl.Equal.2(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.EqWith.impl.Equal.specific_fn.1d8cd8.2: = specific_function %Int.as.EqWith.impl.Equal.6fef86.1, @Int.as.EqWith.impl.Equal.3(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.294: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %.9e1: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.294, %ImplicitAs.facet.c71 [concrete] +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.type: type = fn_type @Cpp.long.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert: %Cpp.long.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] +// CHECK:STDOUT: %.864: type = fn_type_with_self_type %EqWith.WithSelf.NotEqual.type.dc2, %EqWith.facet.685 [concrete] +// CHECK:STDOUT: %Int.as.EqWith.impl.NotEqual.specific_fn.f14bf7.1: = specific_function %Int.as.EqWith.impl.NotEqual.c74654.2, @Int.as.EqWith.impl.NotEqual.2(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.EqWith.impl.NotEqual.specific_fn.f14bf7.2: = specific_function %Int.as.EqWith.impl.NotEqual.c74654.1, @Int.as.EqWith.impl.NotEqual.3(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %OrderedWith.type.484: type = facet_type <@OrderedWith, @OrderedWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.985ed6.1: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.3, @T.as_type.as.OrderedWith.impl.4ed(%T.1ae) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.17b48a.1: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.985ed6.1 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.776eb1.1: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.3, @T.as_type.as.OrderedWith.impl.4ed(%T.1ae) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.bf137f.1: %T.as_type.as.OrderedWith.impl.Greater.type.776eb1.1 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.3b16e8.1: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.3, @T.as_type.as.OrderedWith.impl.4ed(%T.1ae) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.fd69b3.1: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.3b16e8.1 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.9ca225.1: type = fn_type @T.as_type.as.OrderedWith.impl.Less.3, @T.as_type.as.OrderedWith.impl.4ed(%T.1ae) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.571834.1: %T.as_type.as.OrderedWith.impl.Less.type.9ca225.1 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.985ed6.2: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.4, @T.as_type.as.OrderedWith.impl.4ed(%T.1ae) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.17b48a.2: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.985ed6.2 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.776eb1.2: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.4, @T.as_type.as.OrderedWith.impl.4ed(%T.1ae) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.bf137f.2: %T.as_type.as.OrderedWith.impl.Greater.type.776eb1.2 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.3b16e8.2: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.4, @T.as_type.as.OrderedWith.impl.4ed(%T.1ae) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.fd69b3.2: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.3b16e8.2 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.9ca225.2: type = fn_type @T.as_type.as.OrderedWith.impl.Less.4, @T.as_type.as.OrderedWith.impl.4ed(%T.1ae) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.571834.2: %T.as_type.as.OrderedWith.impl.Less.type.9ca225.2 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.GreaterOrEquivalent.type.c3cac1.1: type = fn_type @Int.as.OrderedWith.impl.GreaterOrEquivalent.2, @Int.as.OrderedWith.impl.f36(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.GreaterOrEquivalent.1c7f7d.1: %Int.as.OrderedWith.impl.GreaterOrEquivalent.type.c3cac1.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.type.18c27f.1: type = fn_type @Int.as.OrderedWith.impl.Greater.2, @Int.as.OrderedWith.impl.f36(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.cbccb6.1: %Int.as.OrderedWith.impl.Greater.type.18c27f.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.LessOrEquivalent.type.0ff510.1: type = fn_type @Int.as.OrderedWith.impl.LessOrEquivalent.2, @Int.as.OrderedWith.impl.f36(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.LessOrEquivalent.7bb73f.1: %Int.as.OrderedWith.impl.LessOrEquivalent.type.0ff510.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.type.6605e2.1: type = fn_type @Int.as.OrderedWith.impl.Less.2, @Int.as.OrderedWith.impl.f36(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.59643b.1: %Int.as.OrderedWith.impl.Less.type.6605e2.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.GreaterOrEquivalent.type.c3cac1.2: type = fn_type @Int.as.OrderedWith.impl.GreaterOrEquivalent.3, @Int.as.OrderedWith.impl.f36(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.GreaterOrEquivalent.1c7f7d.2: %Int.as.OrderedWith.impl.GreaterOrEquivalent.type.c3cac1.2 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.type.18c27f.2: type = fn_type @Int.as.OrderedWith.impl.Greater.3, @Int.as.OrderedWith.impl.f36(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.cbccb6.2: %Int.as.OrderedWith.impl.Greater.type.18c27f.2 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.LessOrEquivalent.type.0ff510.2: type = fn_type @Int.as.OrderedWith.impl.LessOrEquivalent.3, @Int.as.OrderedWith.impl.f36(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.LessOrEquivalent.7bb73f.2: %Int.as.OrderedWith.impl.LessOrEquivalent.type.0ff510.2 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.type.6605e2.2: type = fn_type @Int.as.OrderedWith.impl.Less.3, @Int.as.OrderedWith.impl.f36(%N, %T.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.59643b.2: %Int.as.OrderedWith.impl.Less.type.6605e2.2 = struct_value () [symbolic] +// CHECK:STDOUT: %OrderedWith.impl_witness.a98: = impl_witness imports.%OrderedWith.impl_witness_table.b1a, @Int.as.OrderedWith.impl.f36(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.type.7135f0.1: type = fn_type @Int.as.OrderedWith.impl.Less.3, @Int.as.OrderedWith.impl.f36(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.1c6761.1: %Int.as.OrderedWith.impl.Less.type.7135f0.1 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.LessOrEquivalent.type.07dffd.1: type = fn_type @Int.as.OrderedWith.impl.LessOrEquivalent.3, @Int.as.OrderedWith.impl.f36(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.LessOrEquivalent.621392.1: %Int.as.OrderedWith.impl.LessOrEquivalent.type.07dffd.1 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.type.d750f4.1: type = fn_type @Int.as.OrderedWith.impl.Greater.3, @Int.as.OrderedWith.impl.f36(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.0ec18c.1: %Int.as.OrderedWith.impl.Greater.type.d750f4.1 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.GreaterOrEquivalent.type.5bb690.1: type = fn_type @Int.as.OrderedWith.impl.GreaterOrEquivalent.3, @Int.as.OrderedWith.impl.f36(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.GreaterOrEquivalent.ca4fe3.1: %Int.as.OrderedWith.impl.GreaterOrEquivalent.type.5bb690.1 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.type.7135f0.2: type = fn_type @Int.as.OrderedWith.impl.Less.2, @Int.as.OrderedWith.impl.f36(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.1c6761.2: %Int.as.OrderedWith.impl.Less.type.7135f0.2 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.LessOrEquivalent.type.07dffd.2: type = fn_type @Int.as.OrderedWith.impl.LessOrEquivalent.2, @Int.as.OrderedWith.impl.f36(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.LessOrEquivalent.621392.2: %Int.as.OrderedWith.impl.LessOrEquivalent.type.07dffd.2 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.type.d750f4.2: type = fn_type @Int.as.OrderedWith.impl.Greater.2, @Int.as.OrderedWith.impl.f36(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.0ec18c.2: %Int.as.OrderedWith.impl.Greater.type.d750f4.2 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.GreaterOrEquivalent.type.5bb690.2: type = fn_type @Int.as.OrderedWith.impl.GreaterOrEquivalent.2, @Int.as.OrderedWith.impl.f36(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.GreaterOrEquivalent.ca4fe3.2: %Int.as.OrderedWith.impl.GreaterOrEquivalent.type.5bb690.2 = struct_value () [concrete] +// CHECK:STDOUT: %OrderedWith.facet.c3a: %OrderedWith.type.484 = facet_value %i64, (%OrderedWith.impl_witness.a98) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.Less.type.55f: type = fn_type @OrderedWith.WithSelf.Less, @OrderedWith.WithSelf(%Cpp.long, %OrderedWith.facet.c3a) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.LessOrEquivalent.type.d47: type = fn_type @OrderedWith.WithSelf.LessOrEquivalent, @OrderedWith.WithSelf(%Cpp.long, %OrderedWith.facet.c3a) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.Greater.type.400: type = fn_type @OrderedWith.WithSelf.Greater, @OrderedWith.WithSelf(%Cpp.long, %OrderedWith.facet.c3a) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.GreaterOrEquivalent.type.a77: type = fn_type @OrderedWith.WithSelf.GreaterOrEquivalent, @OrderedWith.WithSelf(%Cpp.long, %OrderedWith.facet.c3a) [concrete] +// CHECK:STDOUT: %.c7f: type = fn_type_with_self_type %OrderedWith.WithSelf.Greater.type.400, %OrderedWith.facet.c3a [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.specific_fn.980c5e.1: = specific_function %Int.as.OrderedWith.impl.Greater.0ec18c.2, @Int.as.OrderedWith.impl.Greater.2(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.specific_fn.980c5e.2: = specific_function %Int.as.OrderedWith.impl.Greater.0ec18c.1, @Int.as.OrderedWith.impl.Greater.3(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %.e4f: type = fn_type_with_self_type %OrderedWith.WithSelf.Less.type.55f, %OrderedWith.facet.c3a [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.specific_fn.1c1cdd.1: = specific_function %Int.as.OrderedWith.impl.Less.1c6761.2, @Int.as.OrderedWith.impl.Less.2(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.specific_fn.1c1cdd.2: = specific_function %Int.as.OrderedWith.impl.Less.1c6761.1, @Int.as.OrderedWith.impl.Less.3(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %.ce8f: type = fn_type_with_self_type %OrderedWith.WithSelf.GreaterOrEquivalent.type.a77, %OrderedWith.facet.c3a [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.2fed0f.1: = specific_function %Int.as.OrderedWith.impl.GreaterOrEquivalent.ca4fe3.2, @Int.as.OrderedWith.impl.GreaterOrEquivalent.2(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.2fed0f.2: = specific_function %Int.as.OrderedWith.impl.GreaterOrEquivalent.ca4fe3.1, @Int.as.OrderedWith.impl.GreaterOrEquivalent.3(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %.2df: type = fn_type_with_self_type %OrderedWith.WithSelf.LessOrEquivalent.type.d47, %OrderedWith.facet.c3a [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.LessOrEquivalent.specific_fn.3843b4.1: = specific_function %Int.as.OrderedWith.impl.LessOrEquivalent.621392.2, @Int.as.OrderedWith.impl.LessOrEquivalent.2(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.LessOrEquivalent.specific_fn.3843b4.2: = specific_function %Int.as.OrderedWith.impl.LessOrEquivalent.621392.1, @Int.as.OrderedWith.impl.LessOrEquivalent.3(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %EqWith.impl_witness.b0f: = impl_witness imports.%EqWith.impl_witness_table.195, @T.as_type.as.EqWith.impl.7e7(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.e098d7.1: type = fn_type @T.as_type.as.EqWith.impl.Equal.4, @T.as_type.as.EqWith.impl.7e7(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.32ee3c.1: %T.as_type.as.EqWith.impl.Equal.type.e098d7.1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.2267b3.1: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.4, @T.as_type.as.EqWith.impl.7e7(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.992176.1: %T.as_type.as.EqWith.impl.NotEqual.type.2267b3.1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.e098d7.2: type = fn_type @T.as_type.as.EqWith.impl.Equal.3, @T.as_type.as.EqWith.impl.7e7(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.32ee3c.2: %T.as_type.as.EqWith.impl.Equal.type.e098d7.2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.2267b3.2: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.3, @T.as_type.as.EqWith.impl.7e7(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.992176.2: %T.as_type.as.EqWith.impl.NotEqual.type.2267b3.2 = struct_value () [concrete] +// CHECK:STDOUT: %EqWith.facet.bf7: %EqWith.type.3ed = facet_value Core.IntLiteral, (%EqWith.impl_witness.b0f) [concrete] +// CHECK:STDOUT: %EqWith.WithSelf.Equal.type.1e5: type = fn_type @EqWith.WithSelf.Equal, @EqWith.WithSelf(%Cpp.long, %EqWith.facet.bf7) [concrete] +// CHECK:STDOUT: %EqWith.WithSelf.NotEqual.type.bd5: type = fn_type @EqWith.WithSelf.NotEqual, @EqWith.WithSelf(%Cpp.long, %EqWith.facet.bf7) [concrete] +// CHECK:STDOUT: %.be4: type = fn_type_with_self_type %EqWith.WithSelf.Equal.type.1e5, %EqWith.facet.bf7 [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.bound.c484ca.1: = bound_method %int_1.5b8, %T.as_type.as.EqWith.impl.Equal.32ee3c.2 [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.specific_fn.90c3dc.1: = specific_function %T.as_type.as.EqWith.impl.Equal.32ee3c.2, @T.as_type.as.EqWith.impl.Equal.3(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %bound_method.573be8.1: = bound_method %int_1.5b8, %T.as_type.as.EqWith.impl.Equal.specific_fn.90c3dc.1 [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.bound.c484ca.2: = bound_method %int_1.5b8, %T.as_type.as.EqWith.impl.Equal.32ee3c.1 [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.specific_fn.90c3dc.2: = specific_function %T.as_type.as.EqWith.impl.Equal.32ee3c.1, @T.as_type.as.EqWith.impl.Equal.4(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %bound_method.573be8.2: = bound_method %int_1.5b8, %T.as_type.as.EqWith.impl.Equal.specific_fn.90c3dc.2 [concrete] +// CHECK:STDOUT: %.943: type = fn_type_with_self_type %EqWith.WithSelf.NotEqual.type.bd5, %EqWith.facet.bf7 [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.bound.744760.1: = bound_method %int_1.5b8, %T.as_type.as.EqWith.impl.NotEqual.992176.2 [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.specific_fn.fabde5.1: = specific_function %T.as_type.as.EqWith.impl.NotEqual.992176.2, @T.as_type.as.EqWith.impl.NotEqual.3(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %bound_method.bd39a5.1: = bound_method %int_1.5b8, %T.as_type.as.EqWith.impl.NotEqual.specific_fn.fabde5.1 [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.bound.744760.2: = bound_method %int_1.5b8, %T.as_type.as.EqWith.impl.NotEqual.992176.1 [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.specific_fn.fabde5.2: = specific_function %T.as_type.as.EqWith.impl.NotEqual.992176.1, @T.as_type.as.EqWith.impl.NotEqual.4(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %bound_method.bd39a5.2: = bound_method %int_1.5b8, %T.as_type.as.EqWith.impl.NotEqual.specific_fn.fabde5.2 [concrete] +// CHECK:STDOUT: %OrderedWith.impl_witness.87d: = impl_witness imports.%OrderedWith.impl_witness_table.f65, @T.as_type.as.OrderedWith.impl.4ed(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.8fcddd.1: type = fn_type @T.as_type.as.OrderedWith.impl.Less.4, @T.as_type.as.OrderedWith.impl.4ed(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.7fdd0f.1: %T.as_type.as.OrderedWith.impl.Less.type.8fcddd.1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.a14e77.1: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.4, @T.as_type.as.OrderedWith.impl.4ed(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.6eace1.1: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.a14e77.1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.5b267a.1: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.4, @T.as_type.as.OrderedWith.impl.4ed(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.a7d138.1: %T.as_type.as.OrderedWith.impl.Greater.type.5b267a.1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.b542aa.1: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.4, @T.as_type.as.OrderedWith.impl.4ed(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.8990d1.1: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.b542aa.1 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.8fcddd.2: type = fn_type @T.as_type.as.OrderedWith.impl.Less.3, @T.as_type.as.OrderedWith.impl.4ed(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.7fdd0f.2: %T.as_type.as.OrderedWith.impl.Less.type.8fcddd.2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.a14e77.2: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.3, @T.as_type.as.OrderedWith.impl.4ed(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.6eace1.2: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.a14e77.2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.5b267a.2: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.3, @T.as_type.as.OrderedWith.impl.4ed(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.a7d138.2: %T.as_type.as.OrderedWith.impl.Greater.type.5b267a.2 = struct_value () [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.b542aa.2: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.3, @T.as_type.as.OrderedWith.impl.4ed(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.8990d1.2: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.b542aa.2 = struct_value () [concrete] +// CHECK:STDOUT: %OrderedWith.facet.001: %OrderedWith.type.484 = facet_value Core.IntLiteral, (%OrderedWith.impl_witness.87d) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.Less.type.637: type = fn_type @OrderedWith.WithSelf.Less, @OrderedWith.WithSelf(%Cpp.long, %OrderedWith.facet.001) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.LessOrEquivalent.type.3fb: type = fn_type @OrderedWith.WithSelf.LessOrEquivalent, @OrderedWith.WithSelf(%Cpp.long, %OrderedWith.facet.001) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.Greater.type.992: type = fn_type @OrderedWith.WithSelf.Greater, @OrderedWith.WithSelf(%Cpp.long, %OrderedWith.facet.001) [concrete] +// CHECK:STDOUT: %OrderedWith.WithSelf.GreaterOrEquivalent.type.9de: type = fn_type @OrderedWith.WithSelf.GreaterOrEquivalent, @OrderedWith.WithSelf(%Cpp.long, %OrderedWith.facet.001) [concrete] +// CHECK:STDOUT: %.4ce: type = fn_type_with_self_type %OrderedWith.WithSelf.Greater.type.992, %OrderedWith.facet.001 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.bound.c08816.1: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.Greater.a7d138.2 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.specific_fn.a03db4.1: = specific_function %T.as_type.as.OrderedWith.impl.Greater.a7d138.2, @T.as_type.as.OrderedWith.impl.Greater.3(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %bound_method.a6774b.1: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.Greater.specific_fn.a03db4.1 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.bound.c08816.2: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.Greater.a7d138.1 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.specific_fn.a03db4.2: = specific_function %T.as_type.as.OrderedWith.impl.Greater.a7d138.1, @T.as_type.as.OrderedWith.impl.Greater.4(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %bound_method.a6774b.2: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.Greater.specific_fn.a03db4.2 [concrete] +// CHECK:STDOUT: %.90a: type = fn_type_with_self_type %OrderedWith.WithSelf.Less.type.637, %OrderedWith.facet.001 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.bound.df13e5.1: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.Less.7fdd0f.2 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.specific_fn.7a5c67.1: = specific_function %T.as_type.as.OrderedWith.impl.Less.7fdd0f.2, @T.as_type.as.OrderedWith.impl.Less.3(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %bound_method.65c00c.1: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.Less.specific_fn.7a5c67.1 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.bound.df13e5.2: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.Less.7fdd0f.1 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.specific_fn.7a5c67.2: = specific_function %T.as_type.as.OrderedWith.impl.Less.7fdd0f.1, @T.as_type.as.OrderedWith.impl.Less.4(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %bound_method.65c00c.2: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.Less.specific_fn.7a5c67.2 [concrete] +// CHECK:STDOUT: %.70d: type = fn_type_with_self_type %OrderedWith.WithSelf.GreaterOrEquivalent.type.9de, %OrderedWith.facet.001 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.bound.4bee52.1: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.8990d1.2 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.6be80e.1: = specific_function %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.8990d1.2, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.3(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %bound_method.0f34a9.1: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.6be80e.1 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.bound.4bee52.2: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.8990d1.1 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.6be80e.2: = specific_function %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.8990d1.1, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.4(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %bound_method.0f34a9.2: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.6be80e.2 [concrete] +// CHECK:STDOUT: %.f0a: type = fn_type_with_self_type %OrderedWith.WithSelf.LessOrEquivalent.type.3fb, %OrderedWith.facet.001 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.bound.931d3c.1: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.LessOrEquivalent.6eace1.2 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.19ea46.1: = specific_function %T.as_type.as.OrderedWith.impl.LessOrEquivalent.6eace1.2, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.3(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %bound_method.cc0313.1: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.19ea46.1 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.bound.931d3c.2: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.LessOrEquivalent.6eace1.1 [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.19ea46.2: = specific_function %T.as_type.as.OrderedWith.impl.LessOrEquivalent.6eace1.1, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.4(%ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %bound_method.cc0313.2: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.19ea46.2 [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { +// CHECK:STDOUT: .long = constants.%Cpp.long +// CHECK:STDOUT: import Cpp//... +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import_ref.06c923.1: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.f73 = impl_witness_table (%Core.import_ref.06c923.1), @Core.IntLiteral.as.ImplicitAs.impl.71b [concrete] +// CHECK:STDOUT: %Core.import_ref.ad0: @T.as_type.as.EqWith.impl.7e7.%T.as_type.as.EqWith.impl.Equal.type.2 (%T.as_type.as.EqWith.impl.Equal.type.f384d8.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.EqWith.impl.7e7.%T.as_type.as.EqWith.impl.Equal.2 (constants.%T.as_type.as.EqWith.impl.Equal.99b5a3.1)] +// CHECK:STDOUT: %Core.import_ref.8c0: @T.as_type.as.EqWith.impl.7e7.%T.as_type.as.EqWith.impl.NotEqual.type.2 (%T.as_type.as.EqWith.impl.NotEqual.type.4349fe.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.EqWith.impl.7e7.%T.as_type.as.EqWith.impl.NotEqual.2 (constants.%T.as_type.as.EqWith.impl.NotEqual.50a028.1)] +// CHECK:STDOUT: %EqWith.impl_witness_table.195 = impl_witness_table (%Core.import_ref.ad0, %Core.import_ref.8c0), @T.as_type.as.EqWith.impl.7e7 [concrete] +// CHECK:STDOUT: %Core.Equal.c5f: @T.as_type.as.EqWith.impl.7e7.%T.as_type.as.EqWith.impl.Equal.type.1 (%T.as_type.as.EqWith.impl.Equal.type.f384d8.2) = import_ref Core//prelude/types/cpp/int, Equal, loaded [symbolic = @T.as_type.as.EqWith.impl.7e7.%T.as_type.as.EqWith.impl.Equal.1 (constants.%T.as_type.as.EqWith.impl.Equal.99b5a3.2)] +// CHECK:STDOUT: %Core.NotEqual.e58: @T.as_type.as.EqWith.impl.7e7.%T.as_type.as.EqWith.impl.NotEqual.type.1 (%T.as_type.as.EqWith.impl.NotEqual.type.4349fe.2) = import_ref Core//prelude/types/cpp/int, NotEqual, loaded [symbolic = @T.as_type.as.EqWith.impl.7e7.%T.as_type.as.EqWith.impl.NotEqual.1 (constants.%T.as_type.as.EqWith.impl.NotEqual.50a028.2)] +// CHECK:STDOUT: %Core.import_ref.60d: @Int.as.EqWith.impl.2b8.%Int.as.EqWith.impl.Equal.type.2 (%Int.as.EqWith.impl.Equal.type.c9381b.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.EqWith.impl.2b8.%Int.as.EqWith.impl.Equal.2 (constants.%Int.as.EqWith.impl.Equal.a4cb34.1)] +// CHECK:STDOUT: %Core.import_ref.fb5: @Int.as.EqWith.impl.2b8.%Int.as.EqWith.impl.NotEqual.type.2 (%Int.as.EqWith.impl.NotEqual.type.97ec42.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.EqWith.impl.2b8.%Int.as.EqWith.impl.NotEqual.2 (constants.%Int.as.EqWith.impl.NotEqual.c6c584.1)] +// CHECK:STDOUT: %EqWith.impl_witness_table.d4a = impl_witness_table (%Core.import_ref.60d, %Core.import_ref.fb5), @Int.as.EqWith.impl.2b8 [concrete] +// CHECK:STDOUT: %Core.Equal.926: @Int.as.EqWith.impl.2b8.%Int.as.EqWith.impl.Equal.type.1 (%Int.as.EqWith.impl.Equal.type.c9381b.2) = import_ref Core//prelude/types/int, Equal, loaded [symbolic = @Int.as.EqWith.impl.2b8.%Int.as.EqWith.impl.Equal.1 (constants.%Int.as.EqWith.impl.Equal.a4cb34.2)] +// CHECK:STDOUT: %Core.NotEqual.c83: @Int.as.EqWith.impl.2b8.%Int.as.EqWith.impl.NotEqual.type.1 (%Int.as.EqWith.impl.NotEqual.type.97ec42.2) = import_ref Core//prelude/types/int, NotEqual, loaded [symbolic = @Int.as.EqWith.impl.2b8.%Int.as.EqWith.impl.NotEqual.1 (constants.%Int.as.EqWith.impl.NotEqual.c6c584.2)] +// CHECK:STDOUT: %Core.import_ref.06c923.2: %Cpp.long.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a3a = impl_witness_table (%Core.import_ref.06c923.2), @Cpp.long.as.ImplicitAs.impl.c8d [concrete] +// CHECK:STDOUT: %Core.import_ref.011: @T.as_type.as.OrderedWith.impl.4ed.%T.as_type.as.OrderedWith.impl.Less.type.2 (%T.as_type.as.OrderedWith.impl.Less.type.9ca225.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.OrderedWith.impl.4ed.%T.as_type.as.OrderedWith.impl.Less.2 (constants.%T.as_type.as.OrderedWith.impl.Less.571834.1)] +// CHECK:STDOUT: %Core.import_ref.ba20: @T.as_type.as.OrderedWith.impl.4ed.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.2 (%T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.3b16e8.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.OrderedWith.impl.4ed.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.2 (constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.fd69b3.1)] +// CHECK:STDOUT: %Core.import_ref.44d: @T.as_type.as.OrderedWith.impl.4ed.%T.as_type.as.OrderedWith.impl.Greater.type.2 (%T.as_type.as.OrderedWith.impl.Greater.type.776eb1.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.OrderedWith.impl.4ed.%T.as_type.as.OrderedWith.impl.Greater.2 (constants.%T.as_type.as.OrderedWith.impl.Greater.bf137f.1)] +// CHECK:STDOUT: %Core.import_ref.3aa: @T.as_type.as.OrderedWith.impl.4ed.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.2 (%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.985ed6.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.OrderedWith.impl.4ed.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.2 (constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.17b48a.1)] +// CHECK:STDOUT: %OrderedWith.impl_witness_table.f65 = impl_witness_table (%Core.import_ref.011, %Core.import_ref.ba20, %Core.import_ref.44d, %Core.import_ref.3aa), @T.as_type.as.OrderedWith.impl.4ed [concrete] +// CHECK:STDOUT: %Core.Less.1d9: @T.as_type.as.OrderedWith.impl.4ed.%T.as_type.as.OrderedWith.impl.Less.type.1 (%T.as_type.as.OrderedWith.impl.Less.type.9ca225.2) = import_ref Core//prelude/types/cpp/int, Less, loaded [symbolic = @T.as_type.as.OrderedWith.impl.4ed.%T.as_type.as.OrderedWith.impl.Less.1 (constants.%T.as_type.as.OrderedWith.impl.Less.571834.2)] +// CHECK:STDOUT: %Core.LessOrEquivalent.88c: @T.as_type.as.OrderedWith.impl.4ed.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.1 (%T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.3b16e8.2) = import_ref Core//prelude/types/cpp/int, LessOrEquivalent, loaded [symbolic = @T.as_type.as.OrderedWith.impl.4ed.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.1 (constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.fd69b3.2)] +// CHECK:STDOUT: %Core.Greater.172: @T.as_type.as.OrderedWith.impl.4ed.%T.as_type.as.OrderedWith.impl.Greater.type.1 (%T.as_type.as.OrderedWith.impl.Greater.type.776eb1.2) = import_ref Core//prelude/types/cpp/int, Greater, loaded [symbolic = @T.as_type.as.OrderedWith.impl.4ed.%T.as_type.as.OrderedWith.impl.Greater.1 (constants.%T.as_type.as.OrderedWith.impl.Greater.bf137f.2)] +// CHECK:STDOUT: %Core.GreaterOrEquivalent.09a: @T.as_type.as.OrderedWith.impl.4ed.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.1 (%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.985ed6.2) = import_ref Core//prelude/types/cpp/int, GreaterOrEquivalent, loaded [symbolic = @T.as_type.as.OrderedWith.impl.4ed.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.1 (constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.17b48a.2)] +// CHECK:STDOUT: %Core.import_ref.1dc: @Int.as.OrderedWith.impl.f36.%Int.as.OrderedWith.impl.Less.type.2 (%Int.as.OrderedWith.impl.Less.type.6605e2.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.OrderedWith.impl.f36.%Int.as.OrderedWith.impl.Less.2 (constants.%Int.as.OrderedWith.impl.Less.59643b.1)] +// CHECK:STDOUT: %Core.import_ref.2a5: @Int.as.OrderedWith.impl.f36.%Int.as.OrderedWith.impl.LessOrEquivalent.type.2 (%Int.as.OrderedWith.impl.LessOrEquivalent.type.0ff510.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.OrderedWith.impl.f36.%Int.as.OrderedWith.impl.LessOrEquivalent.2 (constants.%Int.as.OrderedWith.impl.LessOrEquivalent.7bb73f.1)] +// CHECK:STDOUT: %Core.import_ref.0ab: @Int.as.OrderedWith.impl.f36.%Int.as.OrderedWith.impl.Greater.type.2 (%Int.as.OrderedWith.impl.Greater.type.18c27f.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.OrderedWith.impl.f36.%Int.as.OrderedWith.impl.Greater.2 (constants.%Int.as.OrderedWith.impl.Greater.cbccb6.1)] +// CHECK:STDOUT: %Core.import_ref.a4c6: @Int.as.OrderedWith.impl.f36.%Int.as.OrderedWith.impl.GreaterOrEquivalent.type.2 (%Int.as.OrderedWith.impl.GreaterOrEquivalent.type.c3cac1.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.OrderedWith.impl.f36.%Int.as.OrderedWith.impl.GreaterOrEquivalent.2 (constants.%Int.as.OrderedWith.impl.GreaterOrEquivalent.1c7f7d.1)] +// CHECK:STDOUT: %OrderedWith.impl_witness_table.b1a = impl_witness_table (%Core.import_ref.1dc, %Core.import_ref.2a5, %Core.import_ref.0ab, %Core.import_ref.a4c6), @Int.as.OrderedWith.impl.f36 [concrete] +// CHECK:STDOUT: %Core.Less.80e: @Int.as.OrderedWith.impl.f36.%Int.as.OrderedWith.impl.Less.type.1 (%Int.as.OrderedWith.impl.Less.type.6605e2.2) = import_ref Core//prelude/types/int, Less, loaded [symbolic = @Int.as.OrderedWith.impl.f36.%Int.as.OrderedWith.impl.Less.1 (constants.%Int.as.OrderedWith.impl.Less.59643b.2)] +// CHECK:STDOUT: %Core.LessOrEquivalent.633: @Int.as.OrderedWith.impl.f36.%Int.as.OrderedWith.impl.LessOrEquivalent.type.1 (%Int.as.OrderedWith.impl.LessOrEquivalent.type.0ff510.2) = import_ref Core//prelude/types/int, LessOrEquivalent, loaded [symbolic = @Int.as.OrderedWith.impl.f36.%Int.as.OrderedWith.impl.LessOrEquivalent.1 (constants.%Int.as.OrderedWith.impl.LessOrEquivalent.7bb73f.2)] +// CHECK:STDOUT: %Core.Greater.28d: @Int.as.OrderedWith.impl.f36.%Int.as.OrderedWith.impl.Greater.type.1 (%Int.as.OrderedWith.impl.Greater.type.18c27f.2) = import_ref Core//prelude/types/int, Greater, loaded [symbolic = @Int.as.OrderedWith.impl.f36.%Int.as.OrderedWith.impl.Greater.1 (constants.%Int.as.OrderedWith.impl.Greater.cbccb6.2)] +// CHECK:STDOUT: %Core.GreaterOrEquivalent.b3a: @Int.as.OrderedWith.impl.f36.%Int.as.OrderedWith.impl.GreaterOrEquivalent.type.1 (%Int.as.OrderedWith.impl.GreaterOrEquivalent.type.c3cac1.2) = import_ref Core//prelude/types/int, GreaterOrEquivalent, loaded [symbolic = @Int.as.OrderedWith.impl.f36.%Int.as.OrderedWith.impl.GreaterOrEquivalent.1 (constants.%Int.as.OrderedWith.impl.GreaterOrEquivalent.1c7f7d.2)] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @ComparisonsHeterogeneousLongRightSide() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: +// CHECK:STDOUT: %int_1.loc9: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc9: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc9: = bound_method %int_1.loc9, %impl.elem0.loc9 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9: init %Cpp.long = call %bound_method.loc9(%int_1.loc9) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc9_21.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc9_21.2: %Cpp.long = converted %int_1.loc9, %.loc9_21.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc9_13: type = splice_block %long.ref [concrete = constants.%Cpp.long] { +// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %long.ref: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a: %Cpp.long = wrapper_binding a, %.loc9_21.2 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %a.patt: %pattern_type.ada = value_binding_pattern a [concrete = constants.%a.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %b.ref.loc10: %i64 = name_ref b, %b +// CHECK:STDOUT: %a.ref.loc10: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %impl.elem0.loc10_5: %.b68 = impl_witness_access constants.%EqWith.impl_witness.c6b, element0 [concrete = constants.%Int.as.EqWith.impl.Equal.6fef86.2] +// CHECK:STDOUT: %bound_method.loc10_5.1: = bound_method %b.ref.loc10, %impl.elem0.loc10_5 +// CHECK:STDOUT: %specific_fn.loc10: = specific_function %impl.elem0.loc10_5, @Int.as.EqWith.impl.Equal.2(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.EqWith.impl.Equal.specific_fn.1d8cd8.1] +// CHECK:STDOUT: %bound_method.loc10_5.2: = bound_method %b.ref.loc10, %specific_fn.loc10 +// CHECK:STDOUT: %.loc10_5: %Int.as.EqWith.impl.Equal.type.5ee80b.1 = specific_constant imports.%Core.Equal.926, @Int.as.EqWith.impl.2b8(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.EqWith.impl.Equal.6fef86.1] +// CHECK:STDOUT: %Equal.ref.loc10: %Int.as.EqWith.impl.Equal.type.5ee80b.1 = name_ref Equal, %.loc10_5 [concrete = constants.%Int.as.EqWith.impl.Equal.6fef86.1] +// CHECK:STDOUT: %Int.as.EqWith.impl.Equal.bound: = bound_method %b.ref.loc10, %Equal.ref.loc10 +// CHECK:STDOUT: %Int.as.EqWith.impl.Equal.specific_fn: = specific_function %Equal.ref.loc10, @Int.as.EqWith.impl.Equal.3(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.EqWith.impl.Equal.specific_fn.1d8cd8.2] +// CHECK:STDOUT: %bound_method.loc10_5.3: = bound_method %b.ref.loc10, %Int.as.EqWith.impl.Equal.specific_fn +// CHECK:STDOUT: %impl.elem0.loc10_8: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc10_8: = bound_method %a.ref.loc10, %impl.elem0.loc10_8 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc10: init %i64 = call %bound_method.loc10_8(%a.ref.loc10) +// CHECK:STDOUT: %.loc10_8.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc10 +// CHECK:STDOUT: %.loc10_8.2: %i64 = converted %a.ref.loc10, %.loc10_8.1 +// CHECK:STDOUT: %Int.as.EqWith.impl.Equal.call: init bool = call %bound_method.loc10_5.3(%b.ref.loc10, %.loc10_8.2) +// CHECK:STDOUT: %b.ref.loc11: %i64 = name_ref b, %b +// CHECK:STDOUT: %a.ref.loc11: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %impl.elem1.loc11: %.864 = impl_witness_access constants.%EqWith.impl_witness.c6b, element1 [concrete = constants.%Int.as.EqWith.impl.NotEqual.c74654.2] +// CHECK:STDOUT: %bound_method.loc11_5.1: = bound_method %b.ref.loc11, %impl.elem1.loc11 +// CHECK:STDOUT: %specific_fn.loc11: = specific_function %impl.elem1.loc11, @Int.as.EqWith.impl.NotEqual.2(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.EqWith.impl.NotEqual.specific_fn.f14bf7.1] +// CHECK:STDOUT: %bound_method.loc11_5.2: = bound_method %b.ref.loc11, %specific_fn.loc11 +// CHECK:STDOUT: %.loc11_5: %Int.as.EqWith.impl.NotEqual.type.3ca782.1 = specific_constant imports.%Core.NotEqual.c83, @Int.as.EqWith.impl.2b8(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.EqWith.impl.NotEqual.c74654.1] +// CHECK:STDOUT: %NotEqual.ref.loc11: %Int.as.EqWith.impl.NotEqual.type.3ca782.1 = name_ref NotEqual, %.loc11_5 [concrete = constants.%Int.as.EqWith.impl.NotEqual.c74654.1] +// CHECK:STDOUT: %Int.as.EqWith.impl.NotEqual.bound: = bound_method %b.ref.loc11, %NotEqual.ref.loc11 +// CHECK:STDOUT: %Int.as.EqWith.impl.NotEqual.specific_fn: = specific_function %NotEqual.ref.loc11, @Int.as.EqWith.impl.NotEqual.3(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.EqWith.impl.NotEqual.specific_fn.f14bf7.2] +// CHECK:STDOUT: %bound_method.loc11_5.3: = bound_method %b.ref.loc11, %Int.as.EqWith.impl.NotEqual.specific_fn +// CHECK:STDOUT: %impl.elem0.loc11: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc11_8: = bound_method %a.ref.loc11, %impl.elem0.loc11 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc11: init %i64 = call %bound_method.loc11_8(%a.ref.loc11) +// CHECK:STDOUT: %.loc11_8.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc11 +// CHECK:STDOUT: %.loc11_8.2: %i64 = converted %a.ref.loc11, %.loc11_8.1 +// CHECK:STDOUT: %Int.as.EqWith.impl.NotEqual.call: init bool = call %bound_method.loc11_5.3(%b.ref.loc11, %.loc11_8.2) +// CHECK:STDOUT: %b.ref.loc12: %i64 = name_ref b, %b +// CHECK:STDOUT: %a.ref.loc12: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %impl.elem2.loc12: %.c7f = impl_witness_access constants.%OrderedWith.impl_witness.a98, element2 [concrete = constants.%Int.as.OrderedWith.impl.Greater.0ec18c.2] +// CHECK:STDOUT: %bound_method.loc12_5.1: = bound_method %b.ref.loc12, %impl.elem2.loc12 +// CHECK:STDOUT: %specific_fn.loc12: = specific_function %impl.elem2.loc12, @Int.as.OrderedWith.impl.Greater.2(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.OrderedWith.impl.Greater.specific_fn.980c5e.1] +// CHECK:STDOUT: %bound_method.loc12_5.2: = bound_method %b.ref.loc12, %specific_fn.loc12 +// CHECK:STDOUT: %.loc12_5: %Int.as.OrderedWith.impl.Greater.type.d750f4.1 = specific_constant imports.%Core.Greater.28d, @Int.as.OrderedWith.impl.f36(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.OrderedWith.impl.Greater.0ec18c.1] +// CHECK:STDOUT: %Greater.ref.loc12: %Int.as.OrderedWith.impl.Greater.type.d750f4.1 = name_ref Greater, %.loc12_5 [concrete = constants.%Int.as.OrderedWith.impl.Greater.0ec18c.1] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.bound: = bound_method %b.ref.loc12, %Greater.ref.loc12 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.specific_fn: = specific_function %Greater.ref.loc12, @Int.as.OrderedWith.impl.Greater.3(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.OrderedWith.impl.Greater.specific_fn.980c5e.2] +// CHECK:STDOUT: %bound_method.loc12_5.3: = bound_method %b.ref.loc12, %Int.as.OrderedWith.impl.Greater.specific_fn +// CHECK:STDOUT: %impl.elem0.loc12: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc12_7: = bound_method %a.ref.loc12, %impl.elem0.loc12 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc12: init %i64 = call %bound_method.loc12_7(%a.ref.loc12) +// CHECK:STDOUT: %.loc12_7.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc12 +// CHECK:STDOUT: %.loc12_7.2: %i64 = converted %a.ref.loc12, %.loc12_7.1 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Greater.call: init bool = call %bound_method.loc12_5.3(%b.ref.loc12, %.loc12_7.2) +// CHECK:STDOUT: %b.ref.loc13: %i64 = name_ref b, %b +// CHECK:STDOUT: %a.ref.loc13: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %impl.elem0.loc13_5: %.e4f = impl_witness_access constants.%OrderedWith.impl_witness.a98, element0 [concrete = constants.%Int.as.OrderedWith.impl.Less.1c6761.2] +// CHECK:STDOUT: %bound_method.loc13_5.1: = bound_method %b.ref.loc13, %impl.elem0.loc13_5 +// CHECK:STDOUT: %specific_fn.loc13: = specific_function %impl.elem0.loc13_5, @Int.as.OrderedWith.impl.Less.2(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.OrderedWith.impl.Less.specific_fn.1c1cdd.1] +// CHECK:STDOUT: %bound_method.loc13_5.2: = bound_method %b.ref.loc13, %specific_fn.loc13 +// CHECK:STDOUT: %.loc13_5: %Int.as.OrderedWith.impl.Less.type.7135f0.1 = specific_constant imports.%Core.Less.80e, @Int.as.OrderedWith.impl.f36(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.OrderedWith.impl.Less.1c6761.1] +// CHECK:STDOUT: %Less.ref.loc13: %Int.as.OrderedWith.impl.Less.type.7135f0.1 = name_ref Less, %.loc13_5 [concrete = constants.%Int.as.OrderedWith.impl.Less.1c6761.1] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.bound: = bound_method %b.ref.loc13, %Less.ref.loc13 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.specific_fn: = specific_function %Less.ref.loc13, @Int.as.OrderedWith.impl.Less.3(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.OrderedWith.impl.Less.specific_fn.1c1cdd.2] +// CHECK:STDOUT: %bound_method.loc13_5.3: = bound_method %b.ref.loc13, %Int.as.OrderedWith.impl.Less.specific_fn +// CHECK:STDOUT: %impl.elem0.loc13_7: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc13_7: = bound_method %a.ref.loc13, %impl.elem0.loc13_7 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc13: init %i64 = call %bound_method.loc13_7(%a.ref.loc13) +// CHECK:STDOUT: %.loc13_7.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc13 +// CHECK:STDOUT: %.loc13_7.2: %i64 = converted %a.ref.loc13, %.loc13_7.1 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.Less.call: init bool = call %bound_method.loc13_5.3(%b.ref.loc13, %.loc13_7.2) +// CHECK:STDOUT: %b.ref.loc14: %i64 = name_ref b, %b +// CHECK:STDOUT: %a.ref.loc14: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %impl.elem3.loc14: %.ce8f = impl_witness_access constants.%OrderedWith.impl_witness.a98, element3 [concrete = constants.%Int.as.OrderedWith.impl.GreaterOrEquivalent.ca4fe3.2] +// CHECK:STDOUT: %bound_method.loc14_5.1: = bound_method %b.ref.loc14, %impl.elem3.loc14 +// CHECK:STDOUT: %specific_fn.loc14: = specific_function %impl.elem3.loc14, @Int.as.OrderedWith.impl.GreaterOrEquivalent.2(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.2fed0f.1] +// CHECK:STDOUT: %bound_method.loc14_5.2: = bound_method %b.ref.loc14, %specific_fn.loc14 +// CHECK:STDOUT: %.loc14_5: %Int.as.OrderedWith.impl.GreaterOrEquivalent.type.5bb690.1 = specific_constant imports.%Core.GreaterOrEquivalent.b3a, @Int.as.OrderedWith.impl.f36(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.OrderedWith.impl.GreaterOrEquivalent.ca4fe3.1] +// CHECK:STDOUT: %GreaterOrEquivalent.ref.loc14: %Int.as.OrderedWith.impl.GreaterOrEquivalent.type.5bb690.1 = name_ref GreaterOrEquivalent, %.loc14_5 [concrete = constants.%Int.as.OrderedWith.impl.GreaterOrEquivalent.ca4fe3.1] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.GreaterOrEquivalent.bound: = bound_method %b.ref.loc14, %GreaterOrEquivalent.ref.loc14 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn: = specific_function %GreaterOrEquivalent.ref.loc14, @Int.as.OrderedWith.impl.GreaterOrEquivalent.3(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.2fed0f.2] +// CHECK:STDOUT: %bound_method.loc14_5.3: = bound_method %b.ref.loc14, %Int.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn +// CHECK:STDOUT: %impl.elem0.loc14: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc14_8: = bound_method %a.ref.loc14, %impl.elem0.loc14 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc14: init %i64 = call %bound_method.loc14_8(%a.ref.loc14) +// CHECK:STDOUT: %.loc14_8.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc14 +// CHECK:STDOUT: %.loc14_8.2: %i64 = converted %a.ref.loc14, %.loc14_8.1 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.GreaterOrEquivalent.call: init bool = call %bound_method.loc14_5.3(%b.ref.loc14, %.loc14_8.2) +// CHECK:STDOUT: %b.ref.loc15: %i64 = name_ref b, %b +// CHECK:STDOUT: %a.ref.loc15: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %impl.elem1.loc15: %.2df = impl_witness_access constants.%OrderedWith.impl_witness.a98, element1 [concrete = constants.%Int.as.OrderedWith.impl.LessOrEquivalent.621392.2] +// CHECK:STDOUT: %bound_method.loc15_5.1: = bound_method %b.ref.loc15, %impl.elem1.loc15 +// CHECK:STDOUT: %specific_fn.loc15: = specific_function %impl.elem1.loc15, @Int.as.OrderedWith.impl.LessOrEquivalent.2(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.OrderedWith.impl.LessOrEquivalent.specific_fn.3843b4.1] +// CHECK:STDOUT: %bound_method.loc15_5.2: = bound_method %b.ref.loc15, %specific_fn.loc15 +// CHECK:STDOUT: %.loc15_5: %Int.as.OrderedWith.impl.LessOrEquivalent.type.07dffd.1 = specific_constant imports.%Core.LessOrEquivalent.633, @Int.as.OrderedWith.impl.f36(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.OrderedWith.impl.LessOrEquivalent.621392.1] +// CHECK:STDOUT: %LessOrEquivalent.ref.loc15: %Int.as.OrderedWith.impl.LessOrEquivalent.type.07dffd.1 = name_ref LessOrEquivalent, %.loc15_5 [concrete = constants.%Int.as.OrderedWith.impl.LessOrEquivalent.621392.1] +// CHECK:STDOUT: %Int.as.OrderedWith.impl.LessOrEquivalent.bound: = bound_method %b.ref.loc15, %LessOrEquivalent.ref.loc15 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.LessOrEquivalent.specific_fn: = specific_function %LessOrEquivalent.ref.loc15, @Int.as.OrderedWith.impl.LessOrEquivalent.3(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.OrderedWith.impl.LessOrEquivalent.specific_fn.3843b4.2] +// CHECK:STDOUT: %bound_method.loc15_5.3: = bound_method %b.ref.loc15, %Int.as.OrderedWith.impl.LessOrEquivalent.specific_fn +// CHECK:STDOUT: %impl.elem0.loc15: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc15_8: = bound_method %a.ref.loc15, %impl.elem0.loc15 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc15: init %i64 = call %bound_method.loc15_8(%a.ref.loc15) +// CHECK:STDOUT: %.loc15_8.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc15 +// CHECK:STDOUT: %.loc15_8.2: %i64 = converted %a.ref.loc15, %.loc15_8.1 +// CHECK:STDOUT: %Int.as.OrderedWith.impl.LessOrEquivalent.call: init bool = call %bound_method.loc15_5.3(%b.ref.loc15, %.loc15_8.2) +// CHECK:STDOUT: %int_1.loc17: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %a.ref.loc17: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %impl.elem0.loc17_5: %.be4 = impl_witness_access constants.%EqWith.impl_witness.b0f, element0 [concrete = constants.%T.as_type.as.EqWith.impl.Equal.32ee3c.2] +// CHECK:STDOUT: %bound_method.loc17_5.1: = bound_method %int_1.loc17, %impl.elem0.loc17_5 [concrete = constants.%T.as_type.as.EqWith.impl.Equal.bound.c484ca.1] +// CHECK:STDOUT: %ImplicitAs.facet.loc17_5.1: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc17_5.1: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc17_5.1 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %ImplicitAs.facet.loc17_5.2: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc17_5.2: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc17_5.2 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %specific_fn.loc17: = specific_function %impl.elem0.loc17_5, @T.as_type.as.EqWith.impl.Equal.3(constants.%ImplicitAs.facet.210) [concrete = constants.%T.as_type.as.EqWith.impl.Equal.specific_fn.90c3dc.1] +// CHECK:STDOUT: %bound_method.loc17_5.2: = bound_method %int_1.loc17, %specific_fn.loc17 [concrete = constants.%bound_method.573be8.1] +// CHECK:STDOUT: %.loc17_5.3: %T.as_type.as.EqWith.impl.Equal.type.e098d7.1 = specific_constant imports.%Core.Equal.c5f, @T.as_type.as.EqWith.impl.7e7(constants.%ImplicitAs.facet.210) [concrete = constants.%T.as_type.as.EqWith.impl.Equal.32ee3c.1] +// CHECK:STDOUT: %Equal.ref.loc17: %T.as_type.as.EqWith.impl.Equal.type.e098d7.1 = name_ref Equal, %.loc17_5.3 [concrete = constants.%T.as_type.as.EqWith.impl.Equal.32ee3c.1] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.bound: = bound_method %int_1.loc17, %Equal.ref.loc17 [concrete = constants.%T.as_type.as.EqWith.impl.Equal.bound.c484ca.2] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.specific_fn: = specific_function %Equal.ref.loc17, @T.as_type.as.EqWith.impl.Equal.4(constants.%ImplicitAs.facet.210) [concrete = constants.%T.as_type.as.EqWith.impl.Equal.specific_fn.90c3dc.2] +// CHECK:STDOUT: %bound_method.loc17_5.3: = bound_method %int_1.loc17, %T.as_type.as.EqWith.impl.Equal.specific_fn [concrete = constants.%bound_method.573be8.2] +// CHECK:STDOUT: %impl.elem0.loc17_3: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc17_3: = bound_method %int_1.loc17, %impl.elem0.loc17_3 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17: init %Cpp.long = call %bound_method.loc17_3(%int_1.loc17) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc17_3.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc17 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc17_3.2: %Cpp.long = converted %int_1.loc17, %.loc17_3.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.call: init bool = call %bound_method.loc17_5.3(%.loc17_3.2, %a.ref.loc17) +// CHECK:STDOUT: %int_1.loc18: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %a.ref.loc18: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %impl.elem1.loc18: %.943 = impl_witness_access constants.%EqWith.impl_witness.b0f, element1 [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.992176.2] +// CHECK:STDOUT: %bound_method.loc18_5.1: = bound_method %int_1.loc18, %impl.elem1.loc18 [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.bound.744760.1] +// CHECK:STDOUT: %ImplicitAs.facet.loc18_5.1: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc18_5.1: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc18_5.1 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %ImplicitAs.facet.loc18_5.2: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc18_5.2: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc18_5.2 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %specific_fn.loc18: = specific_function %impl.elem1.loc18, @T.as_type.as.EqWith.impl.NotEqual.3(constants.%ImplicitAs.facet.210) [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.specific_fn.fabde5.1] +// CHECK:STDOUT: %bound_method.loc18_5.2: = bound_method %int_1.loc18, %specific_fn.loc18 [concrete = constants.%bound_method.bd39a5.1] +// CHECK:STDOUT: %.loc18_5.3: %T.as_type.as.EqWith.impl.NotEqual.type.2267b3.1 = specific_constant imports.%Core.NotEqual.e58, @T.as_type.as.EqWith.impl.7e7(constants.%ImplicitAs.facet.210) [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.992176.1] +// CHECK:STDOUT: %NotEqual.ref.loc18: %T.as_type.as.EqWith.impl.NotEqual.type.2267b3.1 = name_ref NotEqual, %.loc18_5.3 [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.992176.1] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.bound: = bound_method %int_1.loc18, %NotEqual.ref.loc18 [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.bound.744760.2] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.specific_fn: = specific_function %NotEqual.ref.loc18, @T.as_type.as.EqWith.impl.NotEqual.4(constants.%ImplicitAs.facet.210) [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.specific_fn.fabde5.2] +// CHECK:STDOUT: %bound_method.loc18_5.3: = bound_method %int_1.loc18, %T.as_type.as.EqWith.impl.NotEqual.specific_fn [concrete = constants.%bound_method.bd39a5.2] +// CHECK:STDOUT: %impl.elem0.loc18: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc18_3: = bound_method %int_1.loc18, %impl.elem0.loc18 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18: init %Cpp.long = call %bound_method.loc18_3(%int_1.loc18) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc18_3.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc18_3.2: %Cpp.long = converted %int_1.loc18, %.loc18_3.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.call: init bool = call %bound_method.loc18_5.3(%.loc18_3.2, %a.ref.loc18) +// CHECK:STDOUT: %int_1.loc19: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %a.ref.loc19: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %impl.elem2.loc19: %.4ce = impl_witness_access constants.%OrderedWith.impl_witness.87d, element2 [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.a7d138.2] +// CHECK:STDOUT: %bound_method.loc19_5.1: = bound_method %int_1.loc19, %impl.elem2.loc19 [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.bound.c08816.1] +// CHECK:STDOUT: %ImplicitAs.facet.loc19_5.1: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc19_5.1: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc19_5.1 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %ImplicitAs.facet.loc19_5.2: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc19_5.2: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc19_5.2 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %specific_fn.loc19: = specific_function %impl.elem2.loc19, @T.as_type.as.OrderedWith.impl.Greater.3(constants.%ImplicitAs.facet.210) [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.specific_fn.a03db4.1] +// CHECK:STDOUT: %bound_method.loc19_5.2: = bound_method %int_1.loc19, %specific_fn.loc19 [concrete = constants.%bound_method.a6774b.1] +// CHECK:STDOUT: %.loc19_5.3: %T.as_type.as.OrderedWith.impl.Greater.type.5b267a.1 = specific_constant imports.%Core.Greater.172, @T.as_type.as.OrderedWith.impl.4ed(constants.%ImplicitAs.facet.210) [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.a7d138.1] +// CHECK:STDOUT: %Greater.ref.loc19: %T.as_type.as.OrderedWith.impl.Greater.type.5b267a.1 = name_ref Greater, %.loc19_5.3 [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.a7d138.1] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.bound: = bound_method %int_1.loc19, %Greater.ref.loc19 [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.bound.c08816.2] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.specific_fn: = specific_function %Greater.ref.loc19, @T.as_type.as.OrderedWith.impl.Greater.4(constants.%ImplicitAs.facet.210) [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.specific_fn.a03db4.2] +// CHECK:STDOUT: %bound_method.loc19_5.3: = bound_method %int_1.loc19, %T.as_type.as.OrderedWith.impl.Greater.specific_fn [concrete = constants.%bound_method.a6774b.2] +// CHECK:STDOUT: %impl.elem0.loc19: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc19_3: = bound_method %int_1.loc19, %impl.elem0.loc19 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19: init %Cpp.long = call %bound_method.loc19_3(%int_1.loc19) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc19_3.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc19_3.2: %Cpp.long = converted %int_1.loc19, %.loc19_3.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.call: init bool = call %bound_method.loc19_5.3(%.loc19_3.2, %a.ref.loc19) +// CHECK:STDOUT: %int_1.loc20: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %a.ref.loc20: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %impl.elem0.loc20_5: %.90a = impl_witness_access constants.%OrderedWith.impl_witness.87d, element0 [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.7fdd0f.2] +// CHECK:STDOUT: %bound_method.loc20_5.1: = bound_method %int_1.loc20, %impl.elem0.loc20_5 [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.bound.df13e5.1] +// CHECK:STDOUT: %ImplicitAs.facet.loc20_5.1: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc20_5.1: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc20_5.1 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %ImplicitAs.facet.loc20_5.2: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc20_5.2: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc20_5.2 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20_5, @T.as_type.as.OrderedWith.impl.Less.3(constants.%ImplicitAs.facet.210) [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.specific_fn.7a5c67.1] +// CHECK:STDOUT: %bound_method.loc20_5.2: = bound_method %int_1.loc20, %specific_fn.loc20 [concrete = constants.%bound_method.65c00c.1] +// CHECK:STDOUT: %.loc20_5.3: %T.as_type.as.OrderedWith.impl.Less.type.8fcddd.1 = specific_constant imports.%Core.Less.1d9, @T.as_type.as.OrderedWith.impl.4ed(constants.%ImplicitAs.facet.210) [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.7fdd0f.1] +// CHECK:STDOUT: %Less.ref.loc20: %T.as_type.as.OrderedWith.impl.Less.type.8fcddd.1 = name_ref Less, %.loc20_5.3 [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.7fdd0f.1] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.bound: = bound_method %int_1.loc20, %Less.ref.loc20 [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.bound.df13e5.2] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.specific_fn: = specific_function %Less.ref.loc20, @T.as_type.as.OrderedWith.impl.Less.4(constants.%ImplicitAs.facet.210) [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.specific_fn.7a5c67.2] +// CHECK:STDOUT: %bound_method.loc20_5.3: = bound_method %int_1.loc20, %T.as_type.as.OrderedWith.impl.Less.specific_fn [concrete = constants.%bound_method.65c00c.2] +// CHECK:STDOUT: %impl.elem0.loc20_3: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc20_3: = bound_method %int_1.loc20, %impl.elem0.loc20_3 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20: init %Cpp.long = call %bound_method.loc20_3(%int_1.loc20) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc20_3.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc20_3.2: %Cpp.long = converted %int_1.loc20, %.loc20_3.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.call: init bool = call %bound_method.loc20_5.3(%.loc20_3.2, %a.ref.loc20) +// CHECK:STDOUT: %int_1.loc21: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %a.ref.loc21: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %impl.elem3.loc21: %.70d = impl_witness_access constants.%OrderedWith.impl_witness.87d, element3 [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.8990d1.2] +// CHECK:STDOUT: %bound_method.loc21_5.1: = bound_method %int_1.loc21, %impl.elem3.loc21 [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.bound.4bee52.1] +// CHECK:STDOUT: %ImplicitAs.facet.loc21_5.1: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc21_5.1: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc21_5.1 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %ImplicitAs.facet.loc21_5.2: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc21_5.2: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc21_5.2 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem3.loc21, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.3(constants.%ImplicitAs.facet.210) [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.6be80e.1] +// CHECK:STDOUT: %bound_method.loc21_5.2: = bound_method %int_1.loc21, %specific_fn.loc21 [concrete = constants.%bound_method.0f34a9.1] +// CHECK:STDOUT: %.loc21_5.3: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.b542aa.1 = specific_constant imports.%Core.GreaterOrEquivalent.09a, @T.as_type.as.OrderedWith.impl.4ed(constants.%ImplicitAs.facet.210) [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.8990d1.1] +// CHECK:STDOUT: %GreaterOrEquivalent.ref.loc21: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.b542aa.1 = name_ref GreaterOrEquivalent, %.loc21_5.3 [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.8990d1.1] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.bound: = bound_method %int_1.loc21, %GreaterOrEquivalent.ref.loc21 [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.bound.4bee52.2] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn: = specific_function %GreaterOrEquivalent.ref.loc21, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.4(constants.%ImplicitAs.facet.210) [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.6be80e.2] +// CHECK:STDOUT: %bound_method.loc21_5.3: = bound_method %int_1.loc21, %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn [concrete = constants.%bound_method.0f34a9.2] +// CHECK:STDOUT: %impl.elem0.loc21: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc21_3: = bound_method %int_1.loc21, %impl.elem0.loc21 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21: init %Cpp.long = call %bound_method.loc21_3(%int_1.loc21) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc21_3.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc21_3.2: %Cpp.long = converted %int_1.loc21, %.loc21_3.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.call: init bool = call %bound_method.loc21_5.3(%.loc21_3.2, %a.ref.loc21) +// CHECK:STDOUT: %int_1.loc22: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %a.ref.loc22: %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %impl.elem1.loc22: %.f0a = impl_witness_access constants.%OrderedWith.impl_witness.87d, element1 [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.6eace1.2] +// CHECK:STDOUT: %bound_method.loc22_5.1: = bound_method %int_1.loc22, %impl.elem1.loc22 [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.bound.931d3c.1] +// CHECK:STDOUT: %ImplicitAs.facet.loc22_5.1: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc22_5.1: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc22_5.1 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %ImplicitAs.facet.loc22_5.2: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %.loc22_5.2: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc22_5.2 [concrete = constants.%ImplicitAs.facet.210] +// CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem1.loc22, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.3(constants.%ImplicitAs.facet.210) [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.19ea46.1] +// CHECK:STDOUT: %bound_method.loc22_5.2: = bound_method %int_1.loc22, %specific_fn.loc22 [concrete = constants.%bound_method.cc0313.1] +// CHECK:STDOUT: %.loc22_5.3: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.a14e77.1 = specific_constant imports.%Core.LessOrEquivalent.88c, @T.as_type.as.OrderedWith.impl.4ed(constants.%ImplicitAs.facet.210) [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.6eace1.1] +// CHECK:STDOUT: %LessOrEquivalent.ref.loc22: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.a14e77.1 = name_ref LessOrEquivalent, %.loc22_5.3 [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.6eace1.1] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.bound: = bound_method %int_1.loc22, %LessOrEquivalent.ref.loc22 [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.bound.931d3c.2] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn: = specific_function %LessOrEquivalent.ref.loc22, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.4(constants.%ImplicitAs.facet.210) [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.19ea46.2] +// CHECK:STDOUT: %bound_method.loc22_5.3: = bound_method %int_1.loc22, %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn [concrete = constants.%bound_method.cc0313.2] +// CHECK:STDOUT: %impl.elem0.loc22: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc22_3: = bound_method %int_1.loc22, %impl.elem0.loc22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22: init %Cpp.long = call %bound_method.loc22_3(%int_1.loc22) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc22_3.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc22_3.2: %Cpp.long = converted %int_1.loc22, %.loc22_3.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.call: init bool = call %bound_method.loc22_5.3(%.loc22_3.2, %a.ref.loc22) +// CHECK:STDOUT: +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- compound_assignment_homogeneous_long.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %Cpp.long: type = class_type @Long64 [concrete] +// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] +// CHECK:STDOUT: %i64: type = class_type @Int, @Int(%int_64) [concrete] +// CHECK:STDOUT: %i64.builtin: type = int_type signed, %int_64 [concrete] +// CHECK:STDOUT: %pattern_type.ada: type = pattern_type %Cpp.long [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.ada = ref_binding_pattern a [concrete] +// CHECK:STDOUT: %a.var_patt: %pattern_type.ada = var_pattern %a.patt [concrete] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.340: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] +// CHECK:STDOUT: %T.f84: %Copy.type = symbolic_binding T, 0 [symbolic] +// CHECK:STDOUT: %T.as_type.as.ImplicitAs.impl.Convert.type.6c4: type = fn_type @T.as_type.as.ImplicitAs.impl.Convert, @T.as_type.as.ImplicitAs.impl(%T.f84) [symbolic] +// CHECK:STDOUT: %T.as_type.as.ImplicitAs.impl.Convert.61d: %T.as_type.as.ImplicitAs.impl.Convert.type.6c4 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.5a7: = impl_witness imports.%ImplicitAs.impl_witness_table.f73 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.210: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.5a7) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.562: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Cpp.long, %ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %.6dd: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.562, %ImplicitAs.facet.210 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %int_1.33f: %Cpp.long = int_value 1 [concrete] +// CHECK:STDOUT: %b.patt: %pattern_type.ada = ref_binding_pattern b [concrete] +// CHECK:STDOUT: %b.var_patt: %pattern_type.ada = var_pattern %b.patt [concrete] +// CHECK:STDOUT: %AddAssignWith.type.e06: type = facet_type <@AddAssignWith, @AddAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %U.1ae: %ImplicitAs.type.340 = symbolic_binding U, 0 [symbolic] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.type.1757be.1: type = fn_type @Cpp.long.as.AddAssignWith.impl.Op.1, @Cpp.long.as.AddAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.1fe1da.1: %Cpp.long.as.AddAssignWith.impl.Op.type.1757be.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.type.1757be.2: type = fn_type @Cpp.long.as.AddAssignWith.impl.Op.2, @Cpp.long.as.AddAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.1fe1da.2: %Cpp.long.as.AddAssignWith.impl.Op.type.1757be.2 = struct_value () [symbolic] +// CHECK:STDOUT: %Copy.impl_witness.418: = impl_witness imports.%Copy.impl_witness_table.30d [concrete] +// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %Cpp.long, (%Copy.impl_witness.418) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.0a0: = impl_witness imports.%ImplicitAs.impl_witness_table.5b9, @T.as_type.as.ImplicitAs.impl(%Copy.facet) [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.4c3: %ImplicitAs.type.340 = facet_value %Cpp.long, (%ImplicitAs.impl_witness.0a0) [concrete] +// CHECK:STDOUT: %AddAssignWith.impl_witness.f93: = impl_witness imports.%AddAssignWith.impl_witness_table.338, @Cpp.long.as.AddAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.type.3d63eb.1: type = fn_type @Cpp.long.as.AddAssignWith.impl.Op.2, @Cpp.long.as.AddAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.6dc032.1: %Cpp.long.as.AddAssignWith.impl.Op.type.3d63eb.1 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.type.3d63eb.2: type = fn_type @Cpp.long.as.AddAssignWith.impl.Op.1, @Cpp.long.as.AddAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.6dc032.2: %Cpp.long.as.AddAssignWith.impl.Op.type.3d63eb.2 = struct_value () [concrete] +// CHECK:STDOUT: %AddAssignWith.facet.bbe: %AddAssignWith.type.e06 = facet_value %Cpp.long, (%AddAssignWith.impl_witness.f93) [concrete] +// CHECK:STDOUT: %AddAssignWith.WithSelf.Op.type.8ff: type = fn_type @AddAssignWith.WithSelf.Op, @AddAssignWith.WithSelf(%Cpp.long, %AddAssignWith.facet.bbe) [concrete] +// CHECK:STDOUT: %.8a7: type = fn_type_with_self_type %AddAssignWith.WithSelf.Op.type.8ff, %AddAssignWith.facet.bbe [concrete] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.specific_fn.9e8d09.1: = specific_function %Cpp.long.as.AddAssignWith.impl.Op.6dc032.2, @Cpp.long.as.AddAssignWith.impl.Op.1(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.specific_fn.9e8d09.2: = specific_function %Cpp.long.as.AddAssignWith.impl.Op.6dc032.1, @Cpp.long.as.AddAssignWith.impl.Op.2(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %SubAssignWith.type.6ba: type = facet_type <@SubAssignWith, @SubAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Cpp.long.as.SubAssignWith.impl.Op.type.24d48a.1: type = fn_type @Cpp.long.as.SubAssignWith.impl.Op.1, @Cpp.long.as.SubAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.SubAssignWith.impl.Op.c163a1.1: %Cpp.long.as.SubAssignWith.impl.Op.type.24d48a.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.SubAssignWith.impl.Op.type.24d48a.2: type = fn_type @Cpp.long.as.SubAssignWith.impl.Op.2, @Cpp.long.as.SubAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.SubAssignWith.impl.Op.c163a1.2: %Cpp.long.as.SubAssignWith.impl.Op.type.24d48a.2 = struct_value () [symbolic] +// CHECK:STDOUT: %SubAssignWith.impl_witness.5f8: = impl_witness imports.%SubAssignWith.impl_witness_table.219, @Cpp.long.as.SubAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.SubAssignWith.impl.Op.type.57341e.1: type = fn_type @Cpp.long.as.SubAssignWith.impl.Op.2, @Cpp.long.as.SubAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.SubAssignWith.impl.Op.a0a7a6.1: %Cpp.long.as.SubAssignWith.impl.Op.type.57341e.1 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.SubAssignWith.impl.Op.type.57341e.2: type = fn_type @Cpp.long.as.SubAssignWith.impl.Op.1, @Cpp.long.as.SubAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.SubAssignWith.impl.Op.a0a7a6.2: %Cpp.long.as.SubAssignWith.impl.Op.type.57341e.2 = struct_value () [concrete] +// CHECK:STDOUT: %SubAssignWith.facet.038: %SubAssignWith.type.6ba = facet_value %Cpp.long, (%SubAssignWith.impl_witness.5f8) [concrete] +// CHECK:STDOUT: %SubAssignWith.WithSelf.Op.type.065: type = fn_type @SubAssignWith.WithSelf.Op, @SubAssignWith.WithSelf(%Cpp.long, %SubAssignWith.facet.038) [concrete] +// CHECK:STDOUT: %.52a: type = fn_type_with_self_type %SubAssignWith.WithSelf.Op.type.065, %SubAssignWith.facet.038 [concrete] +// CHECK:STDOUT: %Cpp.long.as.SubAssignWith.impl.Op.specific_fn.95343b.1: = specific_function %Cpp.long.as.SubAssignWith.impl.Op.a0a7a6.2, @Cpp.long.as.SubAssignWith.impl.Op.1(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.SubAssignWith.impl.Op.specific_fn.95343b.2: = specific_function %Cpp.long.as.SubAssignWith.impl.Op.a0a7a6.1, @Cpp.long.as.SubAssignWith.impl.Op.2(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %MulAssignWith.type.642: type = facet_type <@MulAssignWith, @MulAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Cpp.long.as.MulAssignWith.impl.Op.type.aef5ec.1: type = fn_type @Cpp.long.as.MulAssignWith.impl.Op.1, @Cpp.long.as.MulAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.MulAssignWith.impl.Op.5870c9.1: %Cpp.long.as.MulAssignWith.impl.Op.type.aef5ec.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.MulAssignWith.impl.Op.type.aef5ec.2: type = fn_type @Cpp.long.as.MulAssignWith.impl.Op.2, @Cpp.long.as.MulAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.MulAssignWith.impl.Op.5870c9.2: %Cpp.long.as.MulAssignWith.impl.Op.type.aef5ec.2 = struct_value () [symbolic] +// CHECK:STDOUT: %MulAssignWith.impl_witness.2df: = impl_witness imports.%MulAssignWith.impl_witness_table.7c3, @Cpp.long.as.MulAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.MulAssignWith.impl.Op.type.f7a36d.1: type = fn_type @Cpp.long.as.MulAssignWith.impl.Op.2, @Cpp.long.as.MulAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.MulAssignWith.impl.Op.4a1a0a.1: %Cpp.long.as.MulAssignWith.impl.Op.type.f7a36d.1 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.MulAssignWith.impl.Op.type.f7a36d.2: type = fn_type @Cpp.long.as.MulAssignWith.impl.Op.1, @Cpp.long.as.MulAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.MulAssignWith.impl.Op.4a1a0a.2: %Cpp.long.as.MulAssignWith.impl.Op.type.f7a36d.2 = struct_value () [concrete] +// CHECK:STDOUT: %MulAssignWith.facet.898: %MulAssignWith.type.642 = facet_value %Cpp.long, (%MulAssignWith.impl_witness.2df) [concrete] +// CHECK:STDOUT: %MulAssignWith.WithSelf.Op.type.587: type = fn_type @MulAssignWith.WithSelf.Op, @MulAssignWith.WithSelf(%Cpp.long, %MulAssignWith.facet.898) [concrete] +// CHECK:STDOUT: %.7e9: type = fn_type_with_self_type %MulAssignWith.WithSelf.Op.type.587, %MulAssignWith.facet.898 [concrete] +// CHECK:STDOUT: %Cpp.long.as.MulAssignWith.impl.Op.specific_fn.f4a246.1: = specific_function %Cpp.long.as.MulAssignWith.impl.Op.4a1a0a.2, @Cpp.long.as.MulAssignWith.impl.Op.1(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.MulAssignWith.impl.Op.specific_fn.f4a246.2: = specific_function %Cpp.long.as.MulAssignWith.impl.Op.4a1a0a.1, @Cpp.long.as.MulAssignWith.impl.Op.2(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %DivAssignWith.type.64b: type = facet_type <@DivAssignWith, @DivAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Cpp.long.as.DivAssignWith.impl.Op.type.5f53e2.1: type = fn_type @Cpp.long.as.DivAssignWith.impl.Op.1, @Cpp.long.as.DivAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.DivAssignWith.impl.Op.302d61.1: %Cpp.long.as.DivAssignWith.impl.Op.type.5f53e2.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.DivAssignWith.impl.Op.type.5f53e2.2: type = fn_type @Cpp.long.as.DivAssignWith.impl.Op.2, @Cpp.long.as.DivAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.DivAssignWith.impl.Op.302d61.2: %Cpp.long.as.DivAssignWith.impl.Op.type.5f53e2.2 = struct_value () [symbolic] +// CHECK:STDOUT: %DivAssignWith.impl_witness.47c: = impl_witness imports.%DivAssignWith.impl_witness_table.c1b, @Cpp.long.as.DivAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.DivAssignWith.impl.Op.type.00309f.1: type = fn_type @Cpp.long.as.DivAssignWith.impl.Op.2, @Cpp.long.as.DivAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.DivAssignWith.impl.Op.2080ca.1: %Cpp.long.as.DivAssignWith.impl.Op.type.00309f.1 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.DivAssignWith.impl.Op.type.00309f.2: type = fn_type @Cpp.long.as.DivAssignWith.impl.Op.1, @Cpp.long.as.DivAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.DivAssignWith.impl.Op.2080ca.2: %Cpp.long.as.DivAssignWith.impl.Op.type.00309f.2 = struct_value () [concrete] +// CHECK:STDOUT: %DivAssignWith.facet.e69: %DivAssignWith.type.64b = facet_value %Cpp.long, (%DivAssignWith.impl_witness.47c) [concrete] +// CHECK:STDOUT: %DivAssignWith.WithSelf.Op.type.141: type = fn_type @DivAssignWith.WithSelf.Op, @DivAssignWith.WithSelf(%Cpp.long, %DivAssignWith.facet.e69) [concrete] +// CHECK:STDOUT: %.76b: type = fn_type_with_self_type %DivAssignWith.WithSelf.Op.type.141, %DivAssignWith.facet.e69 [concrete] +// CHECK:STDOUT: %Cpp.long.as.DivAssignWith.impl.Op.specific_fn.ea3d38.1: = specific_function %Cpp.long.as.DivAssignWith.impl.Op.2080ca.2, @Cpp.long.as.DivAssignWith.impl.Op.1(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.DivAssignWith.impl.Op.specific_fn.ea3d38.2: = specific_function %Cpp.long.as.DivAssignWith.impl.Op.2080ca.1, @Cpp.long.as.DivAssignWith.impl.Op.2(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %ModAssignWith.type.132: type = facet_type <@ModAssignWith, @ModAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Cpp.long.as.ModAssignWith.impl.Op.type.82500c.1: type = fn_type @Cpp.long.as.ModAssignWith.impl.Op.1, @Cpp.long.as.ModAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.ModAssignWith.impl.Op.d0e55c.1: %Cpp.long.as.ModAssignWith.impl.Op.type.82500c.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.ModAssignWith.impl.Op.type.82500c.2: type = fn_type @Cpp.long.as.ModAssignWith.impl.Op.2, @Cpp.long.as.ModAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.ModAssignWith.impl.Op.d0e55c.2: %Cpp.long.as.ModAssignWith.impl.Op.type.82500c.2 = struct_value () [symbolic] +// CHECK:STDOUT: %ModAssignWith.impl_witness.651: = impl_witness imports.%ModAssignWith.impl_witness_table.fc0, @Cpp.long.as.ModAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.ModAssignWith.impl.Op.type.f1e8d7.1: type = fn_type @Cpp.long.as.ModAssignWith.impl.Op.2, @Cpp.long.as.ModAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.ModAssignWith.impl.Op.c3c3e1.1: %Cpp.long.as.ModAssignWith.impl.Op.type.f1e8d7.1 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.ModAssignWith.impl.Op.type.f1e8d7.2: type = fn_type @Cpp.long.as.ModAssignWith.impl.Op.1, @Cpp.long.as.ModAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.ModAssignWith.impl.Op.c3c3e1.2: %Cpp.long.as.ModAssignWith.impl.Op.type.f1e8d7.2 = struct_value () [concrete] +// CHECK:STDOUT: %ModAssignWith.facet.428: %ModAssignWith.type.132 = facet_value %Cpp.long, (%ModAssignWith.impl_witness.651) [concrete] +// CHECK:STDOUT: %ModAssignWith.WithSelf.Op.type.912: type = fn_type @ModAssignWith.WithSelf.Op, @ModAssignWith.WithSelf(%Cpp.long, %ModAssignWith.facet.428) [concrete] +// CHECK:STDOUT: %.b68: type = fn_type_with_self_type %ModAssignWith.WithSelf.Op.type.912, %ModAssignWith.facet.428 [concrete] +// CHECK:STDOUT: %Cpp.long.as.ModAssignWith.impl.Op.specific_fn.0903fb.1: = specific_function %Cpp.long.as.ModAssignWith.impl.Op.c3c3e1.2, @Cpp.long.as.ModAssignWith.impl.Op.1(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.ModAssignWith.impl.Op.specific_fn.0903fb.2: = specific_function %Cpp.long.as.ModAssignWith.impl.Op.c3c3e1.1, @Cpp.long.as.ModAssignWith.impl.Op.2(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %BitAndAssignWith.type.44e: type = facet_type <@BitAndAssignWith, @BitAndAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitAndAssignWith.impl.Op.type.a75e25.1: type = fn_type @Cpp.long.as.BitAndAssignWith.impl.Op.1, @Cpp.long.as.BitAndAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.BitAndAssignWith.impl.Op.999389.1: %Cpp.long.as.BitAndAssignWith.impl.Op.type.a75e25.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.BitAndAssignWith.impl.Op.type.a75e25.2: type = fn_type @Cpp.long.as.BitAndAssignWith.impl.Op.2, @Cpp.long.as.BitAndAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.BitAndAssignWith.impl.Op.999389.2: %Cpp.long.as.BitAndAssignWith.impl.Op.type.a75e25.2 = struct_value () [symbolic] +// CHECK:STDOUT: %BitAndAssignWith.impl_witness.2eb: = impl_witness imports.%BitAndAssignWith.impl_witness_table.966, @Cpp.long.as.BitAndAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitAndAssignWith.impl.Op.type.810a37.1: type = fn_type @Cpp.long.as.BitAndAssignWith.impl.Op.2, @Cpp.long.as.BitAndAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitAndAssignWith.impl.Op.ee7c77.1: %Cpp.long.as.BitAndAssignWith.impl.Op.type.810a37.1 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitAndAssignWith.impl.Op.type.810a37.2: type = fn_type @Cpp.long.as.BitAndAssignWith.impl.Op.1, @Cpp.long.as.BitAndAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitAndAssignWith.impl.Op.ee7c77.2: %Cpp.long.as.BitAndAssignWith.impl.Op.type.810a37.2 = struct_value () [concrete] +// CHECK:STDOUT: %BitAndAssignWith.facet.257: %BitAndAssignWith.type.44e = facet_value %Cpp.long, (%BitAndAssignWith.impl_witness.2eb) [concrete] +// CHECK:STDOUT: %BitAndAssignWith.WithSelf.Op.type.168: type = fn_type @BitAndAssignWith.WithSelf.Op, @BitAndAssignWith.WithSelf(%Cpp.long, %BitAndAssignWith.facet.257) [concrete] +// CHECK:STDOUT: %.48c: type = fn_type_with_self_type %BitAndAssignWith.WithSelf.Op.type.168, %BitAndAssignWith.facet.257 [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitAndAssignWith.impl.Op.specific_fn.6f1afe.1: = specific_function %Cpp.long.as.BitAndAssignWith.impl.Op.ee7c77.2, @Cpp.long.as.BitAndAssignWith.impl.Op.1(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitAndAssignWith.impl.Op.specific_fn.6f1afe.2: = specific_function %Cpp.long.as.BitAndAssignWith.impl.Op.ee7c77.1, @Cpp.long.as.BitAndAssignWith.impl.Op.2(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %BitOrAssignWith.type.e7d: type = facet_type <@BitOrAssignWith, @BitOrAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitOrAssignWith.impl.Op.type.075426.1: type = fn_type @Cpp.long.as.BitOrAssignWith.impl.Op.1, @Cpp.long.as.BitOrAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.BitOrAssignWith.impl.Op.2cf22a.1: %Cpp.long.as.BitOrAssignWith.impl.Op.type.075426.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.BitOrAssignWith.impl.Op.type.075426.2: type = fn_type @Cpp.long.as.BitOrAssignWith.impl.Op.2, @Cpp.long.as.BitOrAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.BitOrAssignWith.impl.Op.2cf22a.2: %Cpp.long.as.BitOrAssignWith.impl.Op.type.075426.2 = struct_value () [symbolic] +// CHECK:STDOUT: %BitOrAssignWith.impl_witness.0bb: = impl_witness imports.%BitOrAssignWith.impl_witness_table.22c, @Cpp.long.as.BitOrAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitOrAssignWith.impl.Op.type.64caa1.1: type = fn_type @Cpp.long.as.BitOrAssignWith.impl.Op.2, @Cpp.long.as.BitOrAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitOrAssignWith.impl.Op.0dfa3a.1: %Cpp.long.as.BitOrAssignWith.impl.Op.type.64caa1.1 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitOrAssignWith.impl.Op.type.64caa1.2: type = fn_type @Cpp.long.as.BitOrAssignWith.impl.Op.1, @Cpp.long.as.BitOrAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitOrAssignWith.impl.Op.0dfa3a.2: %Cpp.long.as.BitOrAssignWith.impl.Op.type.64caa1.2 = struct_value () [concrete] +// CHECK:STDOUT: %BitOrAssignWith.facet.fa5: %BitOrAssignWith.type.e7d = facet_value %Cpp.long, (%BitOrAssignWith.impl_witness.0bb) [concrete] +// CHECK:STDOUT: %BitOrAssignWith.WithSelf.Op.type.fd3: type = fn_type @BitOrAssignWith.WithSelf.Op, @BitOrAssignWith.WithSelf(%Cpp.long, %BitOrAssignWith.facet.fa5) [concrete] +// CHECK:STDOUT: %.4cc: type = fn_type_with_self_type %BitOrAssignWith.WithSelf.Op.type.fd3, %BitOrAssignWith.facet.fa5 [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitOrAssignWith.impl.Op.specific_fn.8bbade.1: = specific_function %Cpp.long.as.BitOrAssignWith.impl.Op.0dfa3a.2, @Cpp.long.as.BitOrAssignWith.impl.Op.1(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitOrAssignWith.impl.Op.specific_fn.8bbade.2: = specific_function %Cpp.long.as.BitOrAssignWith.impl.Op.0dfa3a.1, @Cpp.long.as.BitOrAssignWith.impl.Op.2(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %BitXorAssignWith.type.ce1: type = facet_type <@BitXorAssignWith, @BitXorAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitXorAssignWith.impl.Op.type.5d04ed.1: type = fn_type @Cpp.long.as.BitXorAssignWith.impl.Op.1, @Cpp.long.as.BitXorAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.BitXorAssignWith.impl.Op.d86e90.1: %Cpp.long.as.BitXorAssignWith.impl.Op.type.5d04ed.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.BitXorAssignWith.impl.Op.type.5d04ed.2: type = fn_type @Cpp.long.as.BitXorAssignWith.impl.Op.2, @Cpp.long.as.BitXorAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.BitXorAssignWith.impl.Op.d86e90.2: %Cpp.long.as.BitXorAssignWith.impl.Op.type.5d04ed.2 = struct_value () [symbolic] +// CHECK:STDOUT: %BitXorAssignWith.impl_witness.2c6: = impl_witness imports.%BitXorAssignWith.impl_witness_table.98a, @Cpp.long.as.BitXorAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitXorAssignWith.impl.Op.type.1a1f6e.1: type = fn_type @Cpp.long.as.BitXorAssignWith.impl.Op.2, @Cpp.long.as.BitXorAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitXorAssignWith.impl.Op.4e19d3.1: %Cpp.long.as.BitXorAssignWith.impl.Op.type.1a1f6e.1 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitXorAssignWith.impl.Op.type.1a1f6e.2: type = fn_type @Cpp.long.as.BitXorAssignWith.impl.Op.1, @Cpp.long.as.BitXorAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitXorAssignWith.impl.Op.4e19d3.2: %Cpp.long.as.BitXorAssignWith.impl.Op.type.1a1f6e.2 = struct_value () [concrete] +// CHECK:STDOUT: %BitXorAssignWith.facet.28a: %BitXorAssignWith.type.ce1 = facet_value %Cpp.long, (%BitXorAssignWith.impl_witness.2c6) [concrete] +// CHECK:STDOUT: %BitXorAssignWith.WithSelf.Op.type.9b8: type = fn_type @BitXorAssignWith.WithSelf.Op, @BitXorAssignWith.WithSelf(%Cpp.long, %BitXorAssignWith.facet.28a) [concrete] +// CHECK:STDOUT: %.569: type = fn_type_with_self_type %BitXorAssignWith.WithSelf.Op.type.9b8, %BitXorAssignWith.facet.28a [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitXorAssignWith.impl.Op.specific_fn.f62acd.1: = specific_function %Cpp.long.as.BitXorAssignWith.impl.Op.4e19d3.2, @Cpp.long.as.BitXorAssignWith.impl.Op.1(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.BitXorAssignWith.impl.Op.specific_fn.f62acd.2: = specific_function %Cpp.long.as.BitXorAssignWith.impl.Op.4e19d3.1, @Cpp.long.as.BitXorAssignWith.impl.Op.2(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %LeftShiftAssignWith.type.452: type = facet_type <@LeftShiftAssignWith, @LeftShiftAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Cpp.long.as.LeftShiftAssignWith.impl.Op.type.d0d9a1.1: type = fn_type @Cpp.long.as.LeftShiftAssignWith.impl.Op.1, @Cpp.long.as.LeftShiftAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.LeftShiftAssignWith.impl.Op.74ba28.1: %Cpp.long.as.LeftShiftAssignWith.impl.Op.type.d0d9a1.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.LeftShiftAssignWith.impl.Op.type.d0d9a1.2: type = fn_type @Cpp.long.as.LeftShiftAssignWith.impl.Op.2, @Cpp.long.as.LeftShiftAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.LeftShiftAssignWith.impl.Op.74ba28.2: %Cpp.long.as.LeftShiftAssignWith.impl.Op.type.d0d9a1.2 = struct_value () [symbolic] +// CHECK:STDOUT: %LeftShiftAssignWith.impl_witness.d34: = impl_witness imports.%LeftShiftAssignWith.impl_witness_table.041, @Cpp.long.as.LeftShiftAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.LeftShiftAssignWith.impl.Op.type.ec8ae6.1: type = fn_type @Cpp.long.as.LeftShiftAssignWith.impl.Op.2, @Cpp.long.as.LeftShiftAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.LeftShiftAssignWith.impl.Op.c3371c.1: %Cpp.long.as.LeftShiftAssignWith.impl.Op.type.ec8ae6.1 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.LeftShiftAssignWith.impl.Op.type.ec8ae6.2: type = fn_type @Cpp.long.as.LeftShiftAssignWith.impl.Op.1, @Cpp.long.as.LeftShiftAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.LeftShiftAssignWith.impl.Op.c3371c.2: %Cpp.long.as.LeftShiftAssignWith.impl.Op.type.ec8ae6.2 = struct_value () [concrete] +// CHECK:STDOUT: %LeftShiftAssignWith.facet.d3d: %LeftShiftAssignWith.type.452 = facet_value %Cpp.long, (%LeftShiftAssignWith.impl_witness.d34) [concrete] +// CHECK:STDOUT: %LeftShiftAssignWith.WithSelf.Op.type.9a1: type = fn_type @LeftShiftAssignWith.WithSelf.Op, @LeftShiftAssignWith.WithSelf(%Cpp.long, %LeftShiftAssignWith.facet.d3d) [concrete] +// CHECK:STDOUT: %.cf6: type = fn_type_with_self_type %LeftShiftAssignWith.WithSelf.Op.type.9a1, %LeftShiftAssignWith.facet.d3d [concrete] +// CHECK:STDOUT: %Cpp.long.as.LeftShiftAssignWith.impl.Op.specific_fn.34c23f.1: = specific_function %Cpp.long.as.LeftShiftAssignWith.impl.Op.c3371c.2, @Cpp.long.as.LeftShiftAssignWith.impl.Op.1(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.LeftShiftAssignWith.impl.Op.specific_fn.34c23f.2: = specific_function %Cpp.long.as.LeftShiftAssignWith.impl.Op.c3371c.1, @Cpp.long.as.LeftShiftAssignWith.impl.Op.2(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %RightShiftAssignWith.type.f17: type = facet_type <@RightShiftAssignWith, @RightShiftAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Cpp.long.as.RightShiftAssignWith.impl.Op.type.dd27f0.1: type = fn_type @Cpp.long.as.RightShiftAssignWith.impl.Op.1, @Cpp.long.as.RightShiftAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.RightShiftAssignWith.impl.Op.9a6679.1: %Cpp.long.as.RightShiftAssignWith.impl.Op.type.dd27f0.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.RightShiftAssignWith.impl.Op.type.dd27f0.2: type = fn_type @Cpp.long.as.RightShiftAssignWith.impl.Op.2, @Cpp.long.as.RightShiftAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.RightShiftAssignWith.impl.Op.9a6679.2: %Cpp.long.as.RightShiftAssignWith.impl.Op.type.dd27f0.2 = struct_value () [symbolic] +// CHECK:STDOUT: %RightShiftAssignWith.impl_witness.350: = impl_witness imports.%RightShiftAssignWith.impl_witness_table.d21, @Cpp.long.as.RightShiftAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.RightShiftAssignWith.impl.Op.type.5465ae.1: type = fn_type @Cpp.long.as.RightShiftAssignWith.impl.Op.2, @Cpp.long.as.RightShiftAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.RightShiftAssignWith.impl.Op.d03ce7.1: %Cpp.long.as.RightShiftAssignWith.impl.Op.type.5465ae.1 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.RightShiftAssignWith.impl.Op.type.5465ae.2: type = fn_type @Cpp.long.as.RightShiftAssignWith.impl.Op.1, @Cpp.long.as.RightShiftAssignWith.impl(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.RightShiftAssignWith.impl.Op.d03ce7.2: %Cpp.long.as.RightShiftAssignWith.impl.Op.type.5465ae.2 = struct_value () [concrete] +// CHECK:STDOUT: %RightShiftAssignWith.facet.679: %RightShiftAssignWith.type.f17 = facet_value %Cpp.long, (%RightShiftAssignWith.impl_witness.350) [concrete] +// CHECK:STDOUT: %RightShiftAssignWith.WithSelf.Op.type.bcc: type = fn_type @RightShiftAssignWith.WithSelf.Op, @RightShiftAssignWith.WithSelf(%Cpp.long, %RightShiftAssignWith.facet.679) [concrete] +// CHECK:STDOUT: %.2db: type = fn_type_with_self_type %RightShiftAssignWith.WithSelf.Op.type.bcc, %RightShiftAssignWith.facet.679 [concrete] +// CHECK:STDOUT: %Cpp.long.as.RightShiftAssignWith.impl.Op.specific_fn.ac9b9d.1: = specific_function %Cpp.long.as.RightShiftAssignWith.impl.Op.d03ce7.2, @Cpp.long.as.RightShiftAssignWith.impl.Op.1(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Cpp.long.as.RightShiftAssignWith.impl.Op.specific_fn.ac9b9d.2: = specific_function %Cpp.long.as.RightShiftAssignWith.impl.Op.d03ce7.1, @Cpp.long.as.RightShiftAssignWith.impl.Op.2(%ImplicitAs.facet.4c3) [concrete] +// CHECK:STDOUT: %Destroy.Op.type.1d8f74.3: type = fn_type @Destroy.Op.loc9_3.3 [concrete] +// CHECK:STDOUT: %Destroy.Op.1a2547.3: %Destroy.Op.type.1d8f74.3 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.Copy.impl.Op.type: type = fn_type @Cpp.long.as.Copy.impl.Op [concrete] +// CHECK:STDOUT: %Cpp.long.as.Copy.impl.Op: %Cpp.long.as.Copy.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { +// CHECK:STDOUT: .long = constants.%Cpp.long +// CHECK:STDOUT: import Cpp//... +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import_ref.051: @T.as_type.as.ImplicitAs.impl.%T.as_type.as.ImplicitAs.impl.Convert.type (%T.as_type.as.ImplicitAs.impl.Convert.type.6c4) = import_ref Core//prelude/types/cpp/int, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.ImplicitAs.impl.%T.as_type.as.ImplicitAs.impl.Convert (constants.%T.as_type.as.ImplicitAs.impl.Convert.61d)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.5b9 = impl_witness_table (%Core.import_ref.051), @T.as_type.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.06c: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.f73 = impl_witness_table (%Core.import_ref.06c), @Core.IntLiteral.as.ImplicitAs.impl.71b [concrete] +// CHECK:STDOUT: %Core.import_ref.d3c: @Cpp.long.as.AddAssignWith.impl.%Cpp.long.as.AddAssignWith.impl.Op.type.2 (%Cpp.long.as.AddAssignWith.impl.Op.type.1757be.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.AddAssignWith.impl.%Cpp.long.as.AddAssignWith.impl.Op.2 (constants.%Cpp.long.as.AddAssignWith.impl.Op.1fe1da.1)] +// CHECK:STDOUT: %AddAssignWith.impl_witness_table.338 = impl_witness_table (%Core.import_ref.d3c), @Cpp.long.as.AddAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.373: @Cpp.long.as.AddAssignWith.impl.%Cpp.long.as.AddAssignWith.impl.Op.type.1 (%Cpp.long.as.AddAssignWith.impl.Op.type.1757be.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.AddAssignWith.impl.%Cpp.long.as.AddAssignWith.impl.Op.1 (constants.%Cpp.long.as.AddAssignWith.impl.Op.1fe1da.2)] +// CHECK:STDOUT: %Core.import_ref.9c3: %Cpp.long.as.Copy.impl.Op.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.Copy.impl.Op] +// CHECK:STDOUT: %Copy.impl_witness_table.30d = impl_witness_table (%Core.import_ref.9c3), @Cpp.long.as.Copy.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.f7887: @Cpp.long.as.SubAssignWith.impl.%Cpp.long.as.SubAssignWith.impl.Op.type.2 (%Cpp.long.as.SubAssignWith.impl.Op.type.24d48a.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.SubAssignWith.impl.%Cpp.long.as.SubAssignWith.impl.Op.2 (constants.%Cpp.long.as.SubAssignWith.impl.Op.c163a1.1)] +// CHECK:STDOUT: %SubAssignWith.impl_witness_table.219 = impl_witness_table (%Core.import_ref.f7887), @Cpp.long.as.SubAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.789: @Cpp.long.as.SubAssignWith.impl.%Cpp.long.as.SubAssignWith.impl.Op.type.1 (%Cpp.long.as.SubAssignWith.impl.Op.type.24d48a.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.SubAssignWith.impl.%Cpp.long.as.SubAssignWith.impl.Op.1 (constants.%Cpp.long.as.SubAssignWith.impl.Op.c163a1.2)] +// CHECK:STDOUT: %Core.import_ref.094: @Cpp.long.as.MulAssignWith.impl.%Cpp.long.as.MulAssignWith.impl.Op.type.2 (%Cpp.long.as.MulAssignWith.impl.Op.type.aef5ec.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.MulAssignWith.impl.%Cpp.long.as.MulAssignWith.impl.Op.2 (constants.%Cpp.long.as.MulAssignWith.impl.Op.5870c9.1)] +// CHECK:STDOUT: %MulAssignWith.impl_witness_table.7c3 = impl_witness_table (%Core.import_ref.094), @Cpp.long.as.MulAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.b2c: @Cpp.long.as.MulAssignWith.impl.%Cpp.long.as.MulAssignWith.impl.Op.type.1 (%Cpp.long.as.MulAssignWith.impl.Op.type.aef5ec.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.MulAssignWith.impl.%Cpp.long.as.MulAssignWith.impl.Op.1 (constants.%Cpp.long.as.MulAssignWith.impl.Op.5870c9.2)] +// CHECK:STDOUT: %Core.import_ref.a6a: @Cpp.long.as.DivAssignWith.impl.%Cpp.long.as.DivAssignWith.impl.Op.type.2 (%Cpp.long.as.DivAssignWith.impl.Op.type.5f53e2.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.DivAssignWith.impl.%Cpp.long.as.DivAssignWith.impl.Op.2 (constants.%Cpp.long.as.DivAssignWith.impl.Op.302d61.1)] +// CHECK:STDOUT: %DivAssignWith.impl_witness_table.c1b = impl_witness_table (%Core.import_ref.a6a), @Cpp.long.as.DivAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.f8d: @Cpp.long.as.DivAssignWith.impl.%Cpp.long.as.DivAssignWith.impl.Op.type.1 (%Cpp.long.as.DivAssignWith.impl.Op.type.5f53e2.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.DivAssignWith.impl.%Cpp.long.as.DivAssignWith.impl.Op.1 (constants.%Cpp.long.as.DivAssignWith.impl.Op.302d61.2)] +// CHECK:STDOUT: %Core.import_ref.56bc: @Cpp.long.as.ModAssignWith.impl.%Cpp.long.as.ModAssignWith.impl.Op.type.2 (%Cpp.long.as.ModAssignWith.impl.Op.type.82500c.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.ModAssignWith.impl.%Cpp.long.as.ModAssignWith.impl.Op.2 (constants.%Cpp.long.as.ModAssignWith.impl.Op.d0e55c.1)] +// CHECK:STDOUT: %ModAssignWith.impl_witness_table.fc0 = impl_witness_table (%Core.import_ref.56bc), @Cpp.long.as.ModAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.6f1: @Cpp.long.as.ModAssignWith.impl.%Cpp.long.as.ModAssignWith.impl.Op.type.1 (%Cpp.long.as.ModAssignWith.impl.Op.type.82500c.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.ModAssignWith.impl.%Cpp.long.as.ModAssignWith.impl.Op.1 (constants.%Cpp.long.as.ModAssignWith.impl.Op.d0e55c.2)] +// CHECK:STDOUT: %Core.import_ref.130: @Cpp.long.as.BitAndAssignWith.impl.%Cpp.long.as.BitAndAssignWith.impl.Op.type.2 (%Cpp.long.as.BitAndAssignWith.impl.Op.type.a75e25.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.BitAndAssignWith.impl.%Cpp.long.as.BitAndAssignWith.impl.Op.2 (constants.%Cpp.long.as.BitAndAssignWith.impl.Op.999389.1)] +// CHECK:STDOUT: %BitAndAssignWith.impl_witness_table.966 = impl_witness_table (%Core.import_ref.130), @Cpp.long.as.BitAndAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.09f: @Cpp.long.as.BitAndAssignWith.impl.%Cpp.long.as.BitAndAssignWith.impl.Op.type.1 (%Cpp.long.as.BitAndAssignWith.impl.Op.type.a75e25.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.BitAndAssignWith.impl.%Cpp.long.as.BitAndAssignWith.impl.Op.1 (constants.%Cpp.long.as.BitAndAssignWith.impl.Op.999389.2)] +// CHECK:STDOUT: %Core.import_ref.839: @Cpp.long.as.BitOrAssignWith.impl.%Cpp.long.as.BitOrAssignWith.impl.Op.type.2 (%Cpp.long.as.BitOrAssignWith.impl.Op.type.075426.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.BitOrAssignWith.impl.%Cpp.long.as.BitOrAssignWith.impl.Op.2 (constants.%Cpp.long.as.BitOrAssignWith.impl.Op.2cf22a.1)] +// CHECK:STDOUT: %BitOrAssignWith.impl_witness_table.22c = impl_witness_table (%Core.import_ref.839), @Cpp.long.as.BitOrAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.607: @Cpp.long.as.BitOrAssignWith.impl.%Cpp.long.as.BitOrAssignWith.impl.Op.type.1 (%Cpp.long.as.BitOrAssignWith.impl.Op.type.075426.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.BitOrAssignWith.impl.%Cpp.long.as.BitOrAssignWith.impl.Op.1 (constants.%Cpp.long.as.BitOrAssignWith.impl.Op.2cf22a.2)] +// CHECK:STDOUT: %Core.import_ref.39ee: @Cpp.long.as.BitXorAssignWith.impl.%Cpp.long.as.BitXorAssignWith.impl.Op.type.2 (%Cpp.long.as.BitXorAssignWith.impl.Op.type.5d04ed.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.BitXorAssignWith.impl.%Cpp.long.as.BitXorAssignWith.impl.Op.2 (constants.%Cpp.long.as.BitXorAssignWith.impl.Op.d86e90.1)] +// CHECK:STDOUT: %BitXorAssignWith.impl_witness_table.98a = impl_witness_table (%Core.import_ref.39ee), @Cpp.long.as.BitXorAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.aed: @Cpp.long.as.BitXorAssignWith.impl.%Cpp.long.as.BitXorAssignWith.impl.Op.type.1 (%Cpp.long.as.BitXorAssignWith.impl.Op.type.5d04ed.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.BitXorAssignWith.impl.%Cpp.long.as.BitXorAssignWith.impl.Op.1 (constants.%Cpp.long.as.BitXorAssignWith.impl.Op.d86e90.2)] +// CHECK:STDOUT: %Core.import_ref.7f9: @Cpp.long.as.LeftShiftAssignWith.impl.%Cpp.long.as.LeftShiftAssignWith.impl.Op.type.2 (%Cpp.long.as.LeftShiftAssignWith.impl.Op.type.d0d9a1.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.LeftShiftAssignWith.impl.%Cpp.long.as.LeftShiftAssignWith.impl.Op.2 (constants.%Cpp.long.as.LeftShiftAssignWith.impl.Op.74ba28.1)] +// CHECK:STDOUT: %LeftShiftAssignWith.impl_witness_table.041 = impl_witness_table (%Core.import_ref.7f9), @Cpp.long.as.LeftShiftAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.114: @Cpp.long.as.LeftShiftAssignWith.impl.%Cpp.long.as.LeftShiftAssignWith.impl.Op.type.1 (%Cpp.long.as.LeftShiftAssignWith.impl.Op.type.d0d9a1.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.LeftShiftAssignWith.impl.%Cpp.long.as.LeftShiftAssignWith.impl.Op.1 (constants.%Cpp.long.as.LeftShiftAssignWith.impl.Op.74ba28.2)] +// CHECK:STDOUT: %Core.import_ref.919: @Cpp.long.as.RightShiftAssignWith.impl.%Cpp.long.as.RightShiftAssignWith.impl.Op.type.2 (%Cpp.long.as.RightShiftAssignWith.impl.Op.type.dd27f0.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.RightShiftAssignWith.impl.%Cpp.long.as.RightShiftAssignWith.impl.Op.2 (constants.%Cpp.long.as.RightShiftAssignWith.impl.Op.9a6679.1)] +// CHECK:STDOUT: %RightShiftAssignWith.impl_witness_table.d21 = impl_witness_table (%Core.import_ref.919), @Cpp.long.as.RightShiftAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.592: @Cpp.long.as.RightShiftAssignWith.impl.%Cpp.long.as.RightShiftAssignWith.impl.Op.type.1 (%Cpp.long.as.RightShiftAssignWith.impl.Op.type.dd27f0.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.RightShiftAssignWith.impl.%Cpp.long.as.RightShiftAssignWith.impl.Op.1 (constants.%Cpp.long.as.RightShiftAssignWith.impl.Op.9a6679.2)] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @CompoundAssignmentHomogeneousLong() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: %a.var: ref %Cpp.long = var_storage %a.var_patt +// CHECK:STDOUT: %int_1.loc8: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc8: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc8: = bound_method %int_1.loc8, %impl.elem0.loc8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8: init %Cpp.long = call %bound_method.loc8(%int_1.loc8) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc8_3: init %Cpp.long = converted %int_1.loc8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: assign %a.var, %.loc8_3 +// CHECK:STDOUT: %.loc8_13: type = splice_block %long.ref.loc8 [concrete = constants.%Cpp.long] { +// CHECK:STDOUT: %Cpp.ref.loc8: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %long.ref.loc8: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a: ref %Cpp.long = wrapper_binding a, %a.var +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %a.patt: %pattern_type.ada = ref_binding_pattern a [concrete = constants.%a.patt] +// CHECK:STDOUT: %a.var_patt: %pattern_type.ada = var_pattern %a.patt [concrete = constants.%a.var_patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %b.var: ref %Cpp.long = var_storage %b.var_patt +// CHECK:STDOUT: %int_1.loc9: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc9: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc9: = bound_method %int_1.loc9, %impl.elem0.loc9 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9: init %Cpp.long = call %bound_method.loc9(%int_1.loc9) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc9_3: init %Cpp.long = converted %int_1.loc9, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: assign %b.var, %.loc9_3 +// CHECK:STDOUT: %.loc9_13: type = splice_block %long.ref.loc9 [concrete = constants.%Cpp.long] { +// CHECK:STDOUT: %Cpp.ref.loc9: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %long.ref.loc9: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long] +// CHECK:STDOUT: } +// CHECK:STDOUT: %b: ref %Cpp.long = wrapper_binding b, %b.var +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %b.patt: %pattern_type.ada = ref_binding_pattern b [concrete = constants.%b.patt] +// CHECK:STDOUT: %b.var_patt: %pattern_type.ada = var_pattern %b.patt [concrete = constants.%b.var_patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a.ref.loc11: ref %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc11: ref %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc11: %.8a7 = impl_witness_access constants.%AddAssignWith.impl_witness.f93, element0 [concrete = constants.%Cpp.long.as.AddAssignWith.impl.Op.6dc032.2] +// CHECK:STDOUT: %bound_method.loc11_5.1: = bound_method %a.ref.loc11, %impl.elem0.loc11 +// CHECK:STDOUT: %ImplicitAs.facet.loc11_5.1: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc11_5.1: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc11_5.1 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %ImplicitAs.facet.loc11_5.2: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc11_5.2: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc11_5.2 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %specific_fn.loc11: = specific_function %impl.elem0.loc11, @Cpp.long.as.AddAssignWith.impl.Op.1(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.AddAssignWith.impl.Op.specific_fn.9e8d09.1] +// CHECK:STDOUT: %bound_method.loc11_5.2: = bound_method %a.ref.loc11, %specific_fn.loc11 +// CHECK:STDOUT: %.loc11_8: %Cpp.long = acquire_value %b.ref.loc11 +// CHECK:STDOUT: %.loc11_5.3: %Cpp.long.as.AddAssignWith.impl.Op.type.3d63eb.1 = specific_constant imports.%Core.Op.373, @Cpp.long.as.AddAssignWith.impl(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.AddAssignWith.impl.Op.6dc032.1] +// CHECK:STDOUT: %Op.ref.loc11: %Cpp.long.as.AddAssignWith.impl.Op.type.3d63eb.1 = name_ref Op, %.loc11_5.3 [concrete = constants.%Cpp.long.as.AddAssignWith.impl.Op.6dc032.1] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.bound: = bound_method %a.ref.loc11, %Op.ref.loc11 +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc11, @Cpp.long.as.AddAssignWith.impl.Op.2(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.AddAssignWith.impl.Op.specific_fn.9e8d09.2] +// CHECK:STDOUT: %bound_method.loc11_5.3: = bound_method %a.ref.loc11, %Cpp.long.as.AddAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc11_5.3(%a.ref.loc11, %.loc11_8) +// CHECK:STDOUT: %a.ref.loc12: ref %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc12: ref %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc12: %.52a = impl_witness_access constants.%SubAssignWith.impl_witness.5f8, element0 [concrete = constants.%Cpp.long.as.SubAssignWith.impl.Op.a0a7a6.2] +// CHECK:STDOUT: %bound_method.loc12_5.1: = bound_method %a.ref.loc12, %impl.elem0.loc12 +// CHECK:STDOUT: %ImplicitAs.facet.loc12_5.1: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc12_5.1: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc12_5.1 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %ImplicitAs.facet.loc12_5.2: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc12_5.2: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc12_5.2 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %specific_fn.loc12: = specific_function %impl.elem0.loc12, @Cpp.long.as.SubAssignWith.impl.Op.1(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.SubAssignWith.impl.Op.specific_fn.95343b.1] +// CHECK:STDOUT: %bound_method.loc12_5.2: = bound_method %a.ref.loc12, %specific_fn.loc12 +// CHECK:STDOUT: %.loc12_8: %Cpp.long = acquire_value %b.ref.loc12 +// CHECK:STDOUT: %.loc12_5.3: %Cpp.long.as.SubAssignWith.impl.Op.type.57341e.1 = specific_constant imports.%Core.Op.789, @Cpp.long.as.SubAssignWith.impl(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.SubAssignWith.impl.Op.a0a7a6.1] +// CHECK:STDOUT: %Op.ref.loc12: %Cpp.long.as.SubAssignWith.impl.Op.type.57341e.1 = name_ref Op, %.loc12_5.3 [concrete = constants.%Cpp.long.as.SubAssignWith.impl.Op.a0a7a6.1] +// CHECK:STDOUT: %Cpp.long.as.SubAssignWith.impl.Op.bound: = bound_method %a.ref.loc12, %Op.ref.loc12 +// CHECK:STDOUT: %Cpp.long.as.SubAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc12, @Cpp.long.as.SubAssignWith.impl.Op.2(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.SubAssignWith.impl.Op.specific_fn.95343b.2] +// CHECK:STDOUT: %bound_method.loc12_5.3: = bound_method %a.ref.loc12, %Cpp.long.as.SubAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %Cpp.long.as.SubAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc12_5.3(%a.ref.loc12, %.loc12_8) +// CHECK:STDOUT: %a.ref.loc13: ref %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc13: ref %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc13: %.7e9 = impl_witness_access constants.%MulAssignWith.impl_witness.2df, element0 [concrete = constants.%Cpp.long.as.MulAssignWith.impl.Op.4a1a0a.2] +// CHECK:STDOUT: %bound_method.loc13_5.1: = bound_method %a.ref.loc13, %impl.elem0.loc13 +// CHECK:STDOUT: %ImplicitAs.facet.loc13_5.1: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc13_5.1: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc13_5.1 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %ImplicitAs.facet.loc13_5.2: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc13_5.2: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc13_5.2 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %specific_fn.loc13: = specific_function %impl.elem0.loc13, @Cpp.long.as.MulAssignWith.impl.Op.1(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.MulAssignWith.impl.Op.specific_fn.f4a246.1] +// CHECK:STDOUT: %bound_method.loc13_5.2: = bound_method %a.ref.loc13, %specific_fn.loc13 +// CHECK:STDOUT: %.loc13_8: %Cpp.long = acquire_value %b.ref.loc13 +// CHECK:STDOUT: %.loc13_5.3: %Cpp.long.as.MulAssignWith.impl.Op.type.f7a36d.1 = specific_constant imports.%Core.Op.b2c, @Cpp.long.as.MulAssignWith.impl(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.MulAssignWith.impl.Op.4a1a0a.1] +// CHECK:STDOUT: %Op.ref.loc13: %Cpp.long.as.MulAssignWith.impl.Op.type.f7a36d.1 = name_ref Op, %.loc13_5.3 [concrete = constants.%Cpp.long.as.MulAssignWith.impl.Op.4a1a0a.1] +// CHECK:STDOUT: %Cpp.long.as.MulAssignWith.impl.Op.bound: = bound_method %a.ref.loc13, %Op.ref.loc13 +// CHECK:STDOUT: %Cpp.long.as.MulAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc13, @Cpp.long.as.MulAssignWith.impl.Op.2(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.MulAssignWith.impl.Op.specific_fn.f4a246.2] +// CHECK:STDOUT: %bound_method.loc13_5.3: = bound_method %a.ref.loc13, %Cpp.long.as.MulAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %Cpp.long.as.MulAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc13_5.3(%a.ref.loc13, %.loc13_8) +// CHECK:STDOUT: %a.ref.loc14: ref %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc14: ref %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc14: %.76b = impl_witness_access constants.%DivAssignWith.impl_witness.47c, element0 [concrete = constants.%Cpp.long.as.DivAssignWith.impl.Op.2080ca.2] +// CHECK:STDOUT: %bound_method.loc14_5.1: = bound_method %a.ref.loc14, %impl.elem0.loc14 +// CHECK:STDOUT: %ImplicitAs.facet.loc14_5.1: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc14_5.1: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc14_5.1 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %ImplicitAs.facet.loc14_5.2: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc14_5.2: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc14_5.2 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %specific_fn.loc14: = specific_function %impl.elem0.loc14, @Cpp.long.as.DivAssignWith.impl.Op.1(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.DivAssignWith.impl.Op.specific_fn.ea3d38.1] +// CHECK:STDOUT: %bound_method.loc14_5.2: = bound_method %a.ref.loc14, %specific_fn.loc14 +// CHECK:STDOUT: %.loc14_8: %Cpp.long = acquire_value %b.ref.loc14 +// CHECK:STDOUT: %.loc14_5.3: %Cpp.long.as.DivAssignWith.impl.Op.type.00309f.1 = specific_constant imports.%Core.Op.f8d, @Cpp.long.as.DivAssignWith.impl(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.DivAssignWith.impl.Op.2080ca.1] +// CHECK:STDOUT: %Op.ref.loc14: %Cpp.long.as.DivAssignWith.impl.Op.type.00309f.1 = name_ref Op, %.loc14_5.3 [concrete = constants.%Cpp.long.as.DivAssignWith.impl.Op.2080ca.1] +// CHECK:STDOUT: %Cpp.long.as.DivAssignWith.impl.Op.bound: = bound_method %a.ref.loc14, %Op.ref.loc14 +// CHECK:STDOUT: %Cpp.long.as.DivAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc14, @Cpp.long.as.DivAssignWith.impl.Op.2(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.DivAssignWith.impl.Op.specific_fn.ea3d38.2] +// CHECK:STDOUT: %bound_method.loc14_5.3: = bound_method %a.ref.loc14, %Cpp.long.as.DivAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %Cpp.long.as.DivAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc14_5.3(%a.ref.loc14, %.loc14_8) +// CHECK:STDOUT: %a.ref.loc15: ref %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc15: ref %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc15: %.b68 = impl_witness_access constants.%ModAssignWith.impl_witness.651, element0 [concrete = constants.%Cpp.long.as.ModAssignWith.impl.Op.c3c3e1.2] +// CHECK:STDOUT: %bound_method.loc15_5.1: = bound_method %a.ref.loc15, %impl.elem0.loc15 +// CHECK:STDOUT: %ImplicitAs.facet.loc15_5.1: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc15_5.1: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc15_5.1 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %ImplicitAs.facet.loc15_5.2: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc15_5.2: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc15_5.2 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %specific_fn.loc15: = specific_function %impl.elem0.loc15, @Cpp.long.as.ModAssignWith.impl.Op.1(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.ModAssignWith.impl.Op.specific_fn.0903fb.1] +// CHECK:STDOUT: %bound_method.loc15_5.2: = bound_method %a.ref.loc15, %specific_fn.loc15 +// CHECK:STDOUT: %.loc15_8: %Cpp.long = acquire_value %b.ref.loc15 +// CHECK:STDOUT: %.loc15_5.3: %Cpp.long.as.ModAssignWith.impl.Op.type.f1e8d7.1 = specific_constant imports.%Core.Op.6f1, @Cpp.long.as.ModAssignWith.impl(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.ModAssignWith.impl.Op.c3c3e1.1] +// CHECK:STDOUT: %Op.ref.loc15: %Cpp.long.as.ModAssignWith.impl.Op.type.f1e8d7.1 = name_ref Op, %.loc15_5.3 [concrete = constants.%Cpp.long.as.ModAssignWith.impl.Op.c3c3e1.1] +// CHECK:STDOUT: %Cpp.long.as.ModAssignWith.impl.Op.bound: = bound_method %a.ref.loc15, %Op.ref.loc15 +// CHECK:STDOUT: %Cpp.long.as.ModAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc15, @Cpp.long.as.ModAssignWith.impl.Op.2(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.ModAssignWith.impl.Op.specific_fn.0903fb.2] +// CHECK:STDOUT: %bound_method.loc15_5.3: = bound_method %a.ref.loc15, %Cpp.long.as.ModAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %Cpp.long.as.ModAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc15_5.3(%a.ref.loc15, %.loc15_8) +// CHECK:STDOUT: %a.ref.loc17: ref %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc17: ref %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc17: %.48c = impl_witness_access constants.%BitAndAssignWith.impl_witness.2eb, element0 [concrete = constants.%Cpp.long.as.BitAndAssignWith.impl.Op.ee7c77.2] +// CHECK:STDOUT: %bound_method.loc17_5.1: = bound_method %a.ref.loc17, %impl.elem0.loc17 +// CHECK:STDOUT: %ImplicitAs.facet.loc17_5.1: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc17_5.1: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc17_5.1 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %ImplicitAs.facet.loc17_5.2: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc17_5.2: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc17_5.2 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %specific_fn.loc17: = specific_function %impl.elem0.loc17, @Cpp.long.as.BitAndAssignWith.impl.Op.1(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.BitAndAssignWith.impl.Op.specific_fn.6f1afe.1] +// CHECK:STDOUT: %bound_method.loc17_5.2: = bound_method %a.ref.loc17, %specific_fn.loc17 +// CHECK:STDOUT: %.loc17_8: %Cpp.long = acquire_value %b.ref.loc17 +// CHECK:STDOUT: %.loc17_5.3: %Cpp.long.as.BitAndAssignWith.impl.Op.type.810a37.1 = specific_constant imports.%Core.Op.09f, @Cpp.long.as.BitAndAssignWith.impl(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.BitAndAssignWith.impl.Op.ee7c77.1] +// CHECK:STDOUT: %Op.ref.loc17: %Cpp.long.as.BitAndAssignWith.impl.Op.type.810a37.1 = name_ref Op, %.loc17_5.3 [concrete = constants.%Cpp.long.as.BitAndAssignWith.impl.Op.ee7c77.1] +// CHECK:STDOUT: %Cpp.long.as.BitAndAssignWith.impl.Op.bound: = bound_method %a.ref.loc17, %Op.ref.loc17 +// CHECK:STDOUT: %Cpp.long.as.BitAndAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc17, @Cpp.long.as.BitAndAssignWith.impl.Op.2(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.BitAndAssignWith.impl.Op.specific_fn.6f1afe.2] +// CHECK:STDOUT: %bound_method.loc17_5.3: = bound_method %a.ref.loc17, %Cpp.long.as.BitAndAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %Cpp.long.as.BitAndAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc17_5.3(%a.ref.loc17, %.loc17_8) +// CHECK:STDOUT: %a.ref.loc18: ref %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc18: ref %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc18: %.4cc = impl_witness_access constants.%BitOrAssignWith.impl_witness.0bb, element0 [concrete = constants.%Cpp.long.as.BitOrAssignWith.impl.Op.0dfa3a.2] +// CHECK:STDOUT: %bound_method.loc18_5.1: = bound_method %a.ref.loc18, %impl.elem0.loc18 +// CHECK:STDOUT: %ImplicitAs.facet.loc18_5.1: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc18_5.1: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc18_5.1 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %ImplicitAs.facet.loc18_5.2: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc18_5.2: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc18_5.2 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %specific_fn.loc18: = specific_function %impl.elem0.loc18, @Cpp.long.as.BitOrAssignWith.impl.Op.1(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.BitOrAssignWith.impl.Op.specific_fn.8bbade.1] +// CHECK:STDOUT: %bound_method.loc18_5.2: = bound_method %a.ref.loc18, %specific_fn.loc18 +// CHECK:STDOUT: %.loc18_8: %Cpp.long = acquire_value %b.ref.loc18 +// CHECK:STDOUT: %.loc18_5.3: %Cpp.long.as.BitOrAssignWith.impl.Op.type.64caa1.1 = specific_constant imports.%Core.Op.607, @Cpp.long.as.BitOrAssignWith.impl(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.BitOrAssignWith.impl.Op.0dfa3a.1] +// CHECK:STDOUT: %Op.ref.loc18: %Cpp.long.as.BitOrAssignWith.impl.Op.type.64caa1.1 = name_ref Op, %.loc18_5.3 [concrete = constants.%Cpp.long.as.BitOrAssignWith.impl.Op.0dfa3a.1] +// CHECK:STDOUT: %Cpp.long.as.BitOrAssignWith.impl.Op.bound: = bound_method %a.ref.loc18, %Op.ref.loc18 +// CHECK:STDOUT: %Cpp.long.as.BitOrAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc18, @Cpp.long.as.BitOrAssignWith.impl.Op.2(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.BitOrAssignWith.impl.Op.specific_fn.8bbade.2] +// CHECK:STDOUT: %bound_method.loc18_5.3: = bound_method %a.ref.loc18, %Cpp.long.as.BitOrAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %Cpp.long.as.BitOrAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc18_5.3(%a.ref.loc18, %.loc18_8) +// CHECK:STDOUT: %a.ref.loc19: ref %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc19: ref %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc19: %.569 = impl_witness_access constants.%BitXorAssignWith.impl_witness.2c6, element0 [concrete = constants.%Cpp.long.as.BitXorAssignWith.impl.Op.4e19d3.2] +// CHECK:STDOUT: %bound_method.loc19_5.1: = bound_method %a.ref.loc19, %impl.elem0.loc19 +// CHECK:STDOUT: %ImplicitAs.facet.loc19_5.1: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc19_5.1: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc19_5.1 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %ImplicitAs.facet.loc19_5.2: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc19_5.2: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc19_5.2 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %specific_fn.loc19: = specific_function %impl.elem0.loc19, @Cpp.long.as.BitXorAssignWith.impl.Op.1(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.BitXorAssignWith.impl.Op.specific_fn.f62acd.1] +// CHECK:STDOUT: %bound_method.loc19_5.2: = bound_method %a.ref.loc19, %specific_fn.loc19 +// CHECK:STDOUT: %.loc19_8: %Cpp.long = acquire_value %b.ref.loc19 +// CHECK:STDOUT: %.loc19_5.3: %Cpp.long.as.BitXorAssignWith.impl.Op.type.1a1f6e.1 = specific_constant imports.%Core.Op.aed, @Cpp.long.as.BitXorAssignWith.impl(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.BitXorAssignWith.impl.Op.4e19d3.1] +// CHECK:STDOUT: %Op.ref.loc19: %Cpp.long.as.BitXorAssignWith.impl.Op.type.1a1f6e.1 = name_ref Op, %.loc19_5.3 [concrete = constants.%Cpp.long.as.BitXorAssignWith.impl.Op.4e19d3.1] +// CHECK:STDOUT: %Cpp.long.as.BitXorAssignWith.impl.Op.bound: = bound_method %a.ref.loc19, %Op.ref.loc19 +// CHECK:STDOUT: %Cpp.long.as.BitXorAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc19, @Cpp.long.as.BitXorAssignWith.impl.Op.2(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.BitXorAssignWith.impl.Op.specific_fn.f62acd.2] +// CHECK:STDOUT: %bound_method.loc19_5.3: = bound_method %a.ref.loc19, %Cpp.long.as.BitXorAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %Cpp.long.as.BitXorAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc19_5.3(%a.ref.loc19, %.loc19_8) +// CHECK:STDOUT: %a.ref.loc20: ref %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc20: ref %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc20: %.cf6 = impl_witness_access constants.%LeftShiftAssignWith.impl_witness.d34, element0 [concrete = constants.%Cpp.long.as.LeftShiftAssignWith.impl.Op.c3371c.2] +// CHECK:STDOUT: %bound_method.loc20_5.1: = bound_method %a.ref.loc20, %impl.elem0.loc20 +// CHECK:STDOUT: %ImplicitAs.facet.loc20_5.1: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc20_5.1: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc20_5.1 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %ImplicitAs.facet.loc20_5.2: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc20_5.2: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc20_5.2 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20, @Cpp.long.as.LeftShiftAssignWith.impl.Op.1(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.LeftShiftAssignWith.impl.Op.specific_fn.34c23f.1] +// CHECK:STDOUT: %bound_method.loc20_5.2: = bound_method %a.ref.loc20, %specific_fn.loc20 +// CHECK:STDOUT: %.loc20_9: %Cpp.long = acquire_value %b.ref.loc20 +// CHECK:STDOUT: %.loc20_5.3: %Cpp.long.as.LeftShiftAssignWith.impl.Op.type.ec8ae6.1 = specific_constant imports.%Core.Op.114, @Cpp.long.as.LeftShiftAssignWith.impl(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.LeftShiftAssignWith.impl.Op.c3371c.1] +// CHECK:STDOUT: %Op.ref.loc20: %Cpp.long.as.LeftShiftAssignWith.impl.Op.type.ec8ae6.1 = name_ref Op, %.loc20_5.3 [concrete = constants.%Cpp.long.as.LeftShiftAssignWith.impl.Op.c3371c.1] +// CHECK:STDOUT: %Cpp.long.as.LeftShiftAssignWith.impl.Op.bound: = bound_method %a.ref.loc20, %Op.ref.loc20 +// CHECK:STDOUT: %Cpp.long.as.LeftShiftAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc20, @Cpp.long.as.LeftShiftAssignWith.impl.Op.2(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.LeftShiftAssignWith.impl.Op.specific_fn.34c23f.2] +// CHECK:STDOUT: %bound_method.loc20_5.3: = bound_method %a.ref.loc20, %Cpp.long.as.LeftShiftAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %Cpp.long.as.LeftShiftAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc20_5.3(%a.ref.loc20, %.loc20_9) +// CHECK:STDOUT: %a.ref.loc21: ref %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc21: ref %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc21: %.2db = impl_witness_access constants.%RightShiftAssignWith.impl_witness.350, element0 [concrete = constants.%Cpp.long.as.RightShiftAssignWith.impl.Op.d03ce7.2] +// CHECK:STDOUT: %bound_method.loc21_5.1: = bound_method %a.ref.loc21, %impl.elem0.loc21 +// CHECK:STDOUT: %ImplicitAs.facet.loc21_5.1: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc21_5.1: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc21_5.1 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %ImplicitAs.facet.loc21_5.2: %ImplicitAs.type.340 = facet_value constants.%Cpp.long, (constants.%ImplicitAs.impl_witness.0a0) [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %.loc21_5.2: %ImplicitAs.type.340 = converted constants.%Cpp.long, %ImplicitAs.facet.loc21_5.2 [concrete = constants.%ImplicitAs.facet.4c3] +// CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem0.loc21, @Cpp.long.as.RightShiftAssignWith.impl.Op.1(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.RightShiftAssignWith.impl.Op.specific_fn.ac9b9d.1] +// CHECK:STDOUT: %bound_method.loc21_5.2: = bound_method %a.ref.loc21, %specific_fn.loc21 +// CHECK:STDOUT: %.loc21_9: %Cpp.long = acquire_value %b.ref.loc21 +// CHECK:STDOUT: %.loc21_5.3: %Cpp.long.as.RightShiftAssignWith.impl.Op.type.5465ae.1 = specific_constant imports.%Core.Op.592, @Cpp.long.as.RightShiftAssignWith.impl(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.RightShiftAssignWith.impl.Op.d03ce7.1] +// CHECK:STDOUT: %Op.ref.loc21: %Cpp.long.as.RightShiftAssignWith.impl.Op.type.5465ae.1 = name_ref Op, %.loc21_5.3 [concrete = constants.%Cpp.long.as.RightShiftAssignWith.impl.Op.d03ce7.1] +// CHECK:STDOUT: %Cpp.long.as.RightShiftAssignWith.impl.Op.bound: = bound_method %a.ref.loc21, %Op.ref.loc21 +// CHECK:STDOUT: %Cpp.long.as.RightShiftAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc21, @Cpp.long.as.RightShiftAssignWith.impl.Op.2(constants.%ImplicitAs.facet.4c3) [concrete = constants.%Cpp.long.as.RightShiftAssignWith.impl.Op.specific_fn.ac9b9d.2] +// CHECK:STDOUT: %bound_method.loc21_5.3: = bound_method %a.ref.loc21, %Cpp.long.as.RightShiftAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %Cpp.long.as.RightShiftAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc21_5.3(%a.ref.loc21, %.loc21_9) +// CHECK:STDOUT: %Destroy.Op.bound.loc9: = bound_method %b.var, constants.%Destroy.Op.1a2547.3 +// CHECK:STDOUT: %Destroy.Op.call.loc9: init %empty_tuple.type = call %Destroy.Op.bound.loc9(%b.var) +// CHECK:STDOUT: %Destroy.Op.bound.loc8: = bound_method %a.var, constants.%Destroy.Op.1a2547.3 +// CHECK:STDOUT: %Destroy.Op.call.loc8: init %empty_tuple.type = call %Destroy.Op.bound.loc8(%a.var) +// CHECK:STDOUT: +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc9_3.1(%self.param: ref %i64.builtin) = "no_op"; +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc9_3.2(%self.param: ref %i64) { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc9_3.3(%self.param: ref %Cpp.long) { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- compound_assignment_hereogeneous_long_and_i64.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] +// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] +// CHECK:STDOUT: %Int.67af24.1: type = class_type @Int, @Int(%N) [symbolic] +// CHECK:STDOUT: %i64: type = class_type @Int, @Int(%int_64) [concrete] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.221: type = facet_type <@ImplicitAs, @ImplicitAs(%i64)> [concrete] +// CHECK:STDOUT: %Cpp.long: type = class_type @Long64 [concrete] +// CHECK:STDOUT: %pattern_type.ada: type = pattern_type %Cpp.long [concrete] +// CHECK:STDOUT: %b.patt: %pattern_type.ada = value_binding_pattern b [concrete] +// CHECK:STDOUT: %ImplicitAs.type.340: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long)> [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.5a7: = impl_witness imports.%ImplicitAs.impl_witness_table.f73 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.210: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.5a7) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.562: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Cpp.long, %ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %.6dd: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.562, %ImplicitAs.facet.210 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce [concrete] +// CHECK:STDOUT: %int_1.33f: %Cpp.long = int_value 1 [concrete] +// CHECK:STDOUT: %AddAssignWith.type.e06: type = facet_type <@AddAssignWith, @AddAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %ImplicitAs.type.f7de31.2: type = facet_type <@ImplicitAs, @ImplicitAs(%Int.67af24.1)> [symbolic] +// CHECK:STDOUT: %U.4e6: %ImplicitAs.type.f7de31.2 = symbolic_binding U, 1 [symbolic] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.type.a58fbe.1: type = fn_type @Int.as.AddAssignWith.impl.Op.1, @Int.as.AddAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.45b360.1: %Int.as.AddAssignWith.impl.Op.type.a58fbe.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.type.a58fbe.2: type = fn_type @Int.as.AddAssignWith.impl.Op.2, @Int.as.AddAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.45b360.2: %Int.as.AddAssignWith.impl.Op.type.a58fbe.2 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.43c: = impl_witness imports.%ImplicitAs.impl_witness_table.a3a [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.c71: %ImplicitAs.type.221 = facet_value %Cpp.long, (%ImplicitAs.impl_witness.43c) [concrete] +// CHECK:STDOUT: %AddAssignWith.impl_witness.3ce: = impl_witness imports.%AddAssignWith.impl_witness_table.c0b, @Int.as.AddAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.type.d4b879.1: type = fn_type @Int.as.AddAssignWith.impl.Op.2, @Int.as.AddAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.4484b8.1: %Int.as.AddAssignWith.impl.Op.type.d4b879.1 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.type.d4b879.2: type = fn_type @Int.as.AddAssignWith.impl.Op.1, @Int.as.AddAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.4484b8.2: %Int.as.AddAssignWith.impl.Op.type.d4b879.2 = struct_value () [concrete] +// CHECK:STDOUT: %AddAssignWith.facet.2ea: %AddAssignWith.type.e06 = facet_value %i64, (%AddAssignWith.impl_witness.3ce) [concrete] +// CHECK:STDOUT: %AddAssignWith.WithSelf.Op.type.987: type = fn_type @AddAssignWith.WithSelf.Op, @AddAssignWith.WithSelf(%Cpp.long, %AddAssignWith.facet.2ea) [concrete] +// CHECK:STDOUT: %.f16: type = fn_type_with_self_type %AddAssignWith.WithSelf.Op.type.987, %AddAssignWith.facet.2ea [concrete] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.specific_fn.b74b59.1: = specific_function %Int.as.AddAssignWith.impl.Op.4484b8.2, @Int.as.AddAssignWith.impl.Op.1(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.specific_fn.b74b59.2: = specific_function %Int.as.AddAssignWith.impl.Op.4484b8.1, @Int.as.AddAssignWith.impl.Op.2(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.294: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %.9e1: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.294, %ImplicitAs.facet.c71 [concrete] +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.type: type = fn_type @Cpp.long.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert: %Cpp.long.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] +// CHECK:STDOUT: %SubAssignWith.type.6ba: type = facet_type <@SubAssignWith, @SubAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Int.as.SubAssignWith.impl.Op.type.8ef325.1: type = fn_type @Int.as.SubAssignWith.impl.Op.1, @Int.as.SubAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.SubAssignWith.impl.Op.f183ca.1: %Int.as.SubAssignWith.impl.Op.type.8ef325.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.SubAssignWith.impl.Op.type.8ef325.2: type = fn_type @Int.as.SubAssignWith.impl.Op.2, @Int.as.SubAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.SubAssignWith.impl.Op.f183ca.2: %Int.as.SubAssignWith.impl.Op.type.8ef325.2 = struct_value () [symbolic] +// CHECK:STDOUT: %SubAssignWith.impl_witness.9f7: = impl_witness imports.%SubAssignWith.impl_witness_table.ed9, @Int.as.SubAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.SubAssignWith.impl.Op.type.a048ce.1: type = fn_type @Int.as.SubAssignWith.impl.Op.2, @Int.as.SubAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.SubAssignWith.impl.Op.880561.1: %Int.as.SubAssignWith.impl.Op.type.a048ce.1 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.SubAssignWith.impl.Op.type.a048ce.2: type = fn_type @Int.as.SubAssignWith.impl.Op.1, @Int.as.SubAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.SubAssignWith.impl.Op.880561.2: %Int.as.SubAssignWith.impl.Op.type.a048ce.2 = struct_value () [concrete] +// CHECK:STDOUT: %SubAssignWith.facet.ae4: %SubAssignWith.type.6ba = facet_value %i64, (%SubAssignWith.impl_witness.9f7) [concrete] +// CHECK:STDOUT: %SubAssignWith.WithSelf.Op.type.bb2: type = fn_type @SubAssignWith.WithSelf.Op, @SubAssignWith.WithSelf(%Cpp.long, %SubAssignWith.facet.ae4) [concrete] +// CHECK:STDOUT: %.d91: type = fn_type_with_self_type %SubAssignWith.WithSelf.Op.type.bb2, %SubAssignWith.facet.ae4 [concrete] +// CHECK:STDOUT: %Int.as.SubAssignWith.impl.Op.specific_fn.854c3f.1: = specific_function %Int.as.SubAssignWith.impl.Op.880561.2, @Int.as.SubAssignWith.impl.Op.1(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.SubAssignWith.impl.Op.specific_fn.854c3f.2: = specific_function %Int.as.SubAssignWith.impl.Op.880561.1, @Int.as.SubAssignWith.impl.Op.2(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %MulAssignWith.type.642: type = facet_type <@MulAssignWith, @MulAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Int.as.MulAssignWith.impl.Op.type.99e92a.1: type = fn_type @Int.as.MulAssignWith.impl.Op.1, @Int.as.MulAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.MulAssignWith.impl.Op.1fe857.1: %Int.as.MulAssignWith.impl.Op.type.99e92a.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.MulAssignWith.impl.Op.type.99e92a.2: type = fn_type @Int.as.MulAssignWith.impl.Op.2, @Int.as.MulAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.MulAssignWith.impl.Op.1fe857.2: %Int.as.MulAssignWith.impl.Op.type.99e92a.2 = struct_value () [symbolic] +// CHECK:STDOUT: %MulAssignWith.impl_witness.5a7: = impl_witness imports.%MulAssignWith.impl_witness_table.bb2, @Int.as.MulAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.MulAssignWith.impl.Op.type.25fd2b.1: type = fn_type @Int.as.MulAssignWith.impl.Op.2, @Int.as.MulAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.MulAssignWith.impl.Op.700938.1: %Int.as.MulAssignWith.impl.Op.type.25fd2b.1 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.MulAssignWith.impl.Op.type.25fd2b.2: type = fn_type @Int.as.MulAssignWith.impl.Op.1, @Int.as.MulAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.MulAssignWith.impl.Op.700938.2: %Int.as.MulAssignWith.impl.Op.type.25fd2b.2 = struct_value () [concrete] +// CHECK:STDOUT: %MulAssignWith.facet.203: %MulAssignWith.type.642 = facet_value %i64, (%MulAssignWith.impl_witness.5a7) [concrete] +// CHECK:STDOUT: %MulAssignWith.WithSelf.Op.type.331: type = fn_type @MulAssignWith.WithSelf.Op, @MulAssignWith.WithSelf(%Cpp.long, %MulAssignWith.facet.203) [concrete] +// CHECK:STDOUT: %.7b5: type = fn_type_with_self_type %MulAssignWith.WithSelf.Op.type.331, %MulAssignWith.facet.203 [concrete] +// CHECK:STDOUT: %Int.as.MulAssignWith.impl.Op.specific_fn.e90d66.1: = specific_function %Int.as.MulAssignWith.impl.Op.700938.2, @Int.as.MulAssignWith.impl.Op.1(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.MulAssignWith.impl.Op.specific_fn.e90d66.2: = specific_function %Int.as.MulAssignWith.impl.Op.700938.1, @Int.as.MulAssignWith.impl.Op.2(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %DivAssignWith.type.64b: type = facet_type <@DivAssignWith, @DivAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Int.as.DivAssignWith.impl.Op.type.33a652.1: type = fn_type @Int.as.DivAssignWith.impl.Op.1, @Int.as.DivAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.DivAssignWith.impl.Op.e8972a.1: %Int.as.DivAssignWith.impl.Op.type.33a652.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.DivAssignWith.impl.Op.type.33a652.2: type = fn_type @Int.as.DivAssignWith.impl.Op.2, @Int.as.DivAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.DivAssignWith.impl.Op.e8972a.2: %Int.as.DivAssignWith.impl.Op.type.33a652.2 = struct_value () [symbolic] +// CHECK:STDOUT: %DivAssignWith.impl_witness.39f: = impl_witness imports.%DivAssignWith.impl_witness_table.ff8, @Int.as.DivAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.DivAssignWith.impl.Op.type.92ce4f.1: type = fn_type @Int.as.DivAssignWith.impl.Op.2, @Int.as.DivAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.DivAssignWith.impl.Op.c6930d.1: %Int.as.DivAssignWith.impl.Op.type.92ce4f.1 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.DivAssignWith.impl.Op.type.92ce4f.2: type = fn_type @Int.as.DivAssignWith.impl.Op.1, @Int.as.DivAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.DivAssignWith.impl.Op.c6930d.2: %Int.as.DivAssignWith.impl.Op.type.92ce4f.2 = struct_value () [concrete] +// CHECK:STDOUT: %DivAssignWith.facet.4a4: %DivAssignWith.type.64b = facet_value %i64, (%DivAssignWith.impl_witness.39f) [concrete] +// CHECK:STDOUT: %DivAssignWith.WithSelf.Op.type.f0d: type = fn_type @DivAssignWith.WithSelf.Op, @DivAssignWith.WithSelf(%Cpp.long, %DivAssignWith.facet.4a4) [concrete] +// CHECK:STDOUT: %.c68: type = fn_type_with_self_type %DivAssignWith.WithSelf.Op.type.f0d, %DivAssignWith.facet.4a4 [concrete] +// CHECK:STDOUT: %Int.as.DivAssignWith.impl.Op.specific_fn.0454de.1: = specific_function %Int.as.DivAssignWith.impl.Op.c6930d.2, @Int.as.DivAssignWith.impl.Op.1(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.DivAssignWith.impl.Op.specific_fn.0454de.2: = specific_function %Int.as.DivAssignWith.impl.Op.c6930d.1, @Int.as.DivAssignWith.impl.Op.2(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %ModAssignWith.type.132: type = facet_type <@ModAssignWith, @ModAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Int.as.ModAssignWith.impl.Op.type.42e78c.1: type = fn_type @Int.as.ModAssignWith.impl.Op.1, @Int.as.ModAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.ModAssignWith.impl.Op.12511c.1: %Int.as.ModAssignWith.impl.Op.type.42e78c.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.ModAssignWith.impl.Op.type.42e78c.2: type = fn_type @Int.as.ModAssignWith.impl.Op.2, @Int.as.ModAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.ModAssignWith.impl.Op.12511c.2: %Int.as.ModAssignWith.impl.Op.type.42e78c.2 = struct_value () [symbolic] +// CHECK:STDOUT: %ModAssignWith.impl_witness.a1c: = impl_witness imports.%ModAssignWith.impl_witness_table.1e5, @Int.as.ModAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.ModAssignWith.impl.Op.type.9b6f30.1: type = fn_type @Int.as.ModAssignWith.impl.Op.2, @Int.as.ModAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.ModAssignWith.impl.Op.b03bdb.1: %Int.as.ModAssignWith.impl.Op.type.9b6f30.1 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.ModAssignWith.impl.Op.type.9b6f30.2: type = fn_type @Int.as.ModAssignWith.impl.Op.1, @Int.as.ModAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.ModAssignWith.impl.Op.b03bdb.2: %Int.as.ModAssignWith.impl.Op.type.9b6f30.2 = struct_value () [concrete] +// CHECK:STDOUT: %ModAssignWith.facet.591: %ModAssignWith.type.132 = facet_value %i64, (%ModAssignWith.impl_witness.a1c) [concrete] +// CHECK:STDOUT: %ModAssignWith.WithSelf.Op.type.bd3: type = fn_type @ModAssignWith.WithSelf.Op, @ModAssignWith.WithSelf(%Cpp.long, %ModAssignWith.facet.591) [concrete] +// CHECK:STDOUT: %.360: type = fn_type_with_self_type %ModAssignWith.WithSelf.Op.type.bd3, %ModAssignWith.facet.591 [concrete] +// CHECK:STDOUT: %Int.as.ModAssignWith.impl.Op.specific_fn.143374.1: = specific_function %Int.as.ModAssignWith.impl.Op.b03bdb.2, @Int.as.ModAssignWith.impl.Op.1(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.ModAssignWith.impl.Op.specific_fn.143374.2: = specific_function %Int.as.ModAssignWith.impl.Op.b03bdb.1, @Int.as.ModAssignWith.impl.Op.2(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %BitAndAssignWith.type.44e: type = facet_type <@BitAndAssignWith, @BitAndAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Int.as.BitAndAssignWith.impl.Op.type.490e73.1: type = fn_type @Int.as.BitAndAssignWith.impl.Op.1, @Int.as.BitAndAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.BitAndAssignWith.impl.Op.c3b0c6.1: %Int.as.BitAndAssignWith.impl.Op.type.490e73.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.BitAndAssignWith.impl.Op.type.490e73.2: type = fn_type @Int.as.BitAndAssignWith.impl.Op.2, @Int.as.BitAndAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.BitAndAssignWith.impl.Op.c3b0c6.2: %Int.as.BitAndAssignWith.impl.Op.type.490e73.2 = struct_value () [symbolic] +// CHECK:STDOUT: %BitAndAssignWith.impl_witness.2c7: = impl_witness imports.%BitAndAssignWith.impl_witness_table.b95, @Int.as.BitAndAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.BitAndAssignWith.impl.Op.type.bbaece.1: type = fn_type @Int.as.BitAndAssignWith.impl.Op.2, @Int.as.BitAndAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.BitAndAssignWith.impl.Op.096e1a.1: %Int.as.BitAndAssignWith.impl.Op.type.bbaece.1 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.BitAndAssignWith.impl.Op.type.bbaece.2: type = fn_type @Int.as.BitAndAssignWith.impl.Op.1, @Int.as.BitAndAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.BitAndAssignWith.impl.Op.096e1a.2: %Int.as.BitAndAssignWith.impl.Op.type.bbaece.2 = struct_value () [concrete] +// CHECK:STDOUT: %BitAndAssignWith.facet.b9a: %BitAndAssignWith.type.44e = facet_value %i64, (%BitAndAssignWith.impl_witness.2c7) [concrete] +// CHECK:STDOUT: %BitAndAssignWith.WithSelf.Op.type.fe9: type = fn_type @BitAndAssignWith.WithSelf.Op, @BitAndAssignWith.WithSelf(%Cpp.long, %BitAndAssignWith.facet.b9a) [concrete] +// CHECK:STDOUT: %.706: type = fn_type_with_self_type %BitAndAssignWith.WithSelf.Op.type.fe9, %BitAndAssignWith.facet.b9a [concrete] +// CHECK:STDOUT: %Int.as.BitAndAssignWith.impl.Op.specific_fn.4f006b.1: = specific_function %Int.as.BitAndAssignWith.impl.Op.096e1a.2, @Int.as.BitAndAssignWith.impl.Op.1(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.BitAndAssignWith.impl.Op.specific_fn.4f006b.2: = specific_function %Int.as.BitAndAssignWith.impl.Op.096e1a.1, @Int.as.BitAndAssignWith.impl.Op.2(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %BitOrAssignWith.type.e7d: type = facet_type <@BitOrAssignWith, @BitOrAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Int.as.BitOrAssignWith.impl.Op.type.f57ae9.1: type = fn_type @Int.as.BitOrAssignWith.impl.Op.1, @Int.as.BitOrAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.BitOrAssignWith.impl.Op.d3cc0c.1: %Int.as.BitOrAssignWith.impl.Op.type.f57ae9.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.BitOrAssignWith.impl.Op.type.f57ae9.2: type = fn_type @Int.as.BitOrAssignWith.impl.Op.2, @Int.as.BitOrAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.BitOrAssignWith.impl.Op.d3cc0c.2: %Int.as.BitOrAssignWith.impl.Op.type.f57ae9.2 = struct_value () [symbolic] +// CHECK:STDOUT: %BitOrAssignWith.impl_witness.084: = impl_witness imports.%BitOrAssignWith.impl_witness_table.80a, @Int.as.BitOrAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.BitOrAssignWith.impl.Op.type.9c3899.1: type = fn_type @Int.as.BitOrAssignWith.impl.Op.2, @Int.as.BitOrAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.BitOrAssignWith.impl.Op.508e1b.1: %Int.as.BitOrAssignWith.impl.Op.type.9c3899.1 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.BitOrAssignWith.impl.Op.type.9c3899.2: type = fn_type @Int.as.BitOrAssignWith.impl.Op.1, @Int.as.BitOrAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.BitOrAssignWith.impl.Op.508e1b.2: %Int.as.BitOrAssignWith.impl.Op.type.9c3899.2 = struct_value () [concrete] +// CHECK:STDOUT: %BitOrAssignWith.facet.db7: %BitOrAssignWith.type.e7d = facet_value %i64, (%BitOrAssignWith.impl_witness.084) [concrete] +// CHECK:STDOUT: %BitOrAssignWith.WithSelf.Op.type.a8d: type = fn_type @BitOrAssignWith.WithSelf.Op, @BitOrAssignWith.WithSelf(%Cpp.long, %BitOrAssignWith.facet.db7) [concrete] +// CHECK:STDOUT: %.aa5: type = fn_type_with_self_type %BitOrAssignWith.WithSelf.Op.type.a8d, %BitOrAssignWith.facet.db7 [concrete] +// CHECK:STDOUT: %Int.as.BitOrAssignWith.impl.Op.specific_fn.67f0b3.1: = specific_function %Int.as.BitOrAssignWith.impl.Op.508e1b.2, @Int.as.BitOrAssignWith.impl.Op.1(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.BitOrAssignWith.impl.Op.specific_fn.67f0b3.2: = specific_function %Int.as.BitOrAssignWith.impl.Op.508e1b.1, @Int.as.BitOrAssignWith.impl.Op.2(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %BitXorAssignWith.type.ce1: type = facet_type <@BitXorAssignWith, @BitXorAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Int.as.BitXorAssignWith.impl.Op.type.6fa003.1: type = fn_type @Int.as.BitXorAssignWith.impl.Op.1, @Int.as.BitXorAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.BitXorAssignWith.impl.Op.492b4e.1: %Int.as.BitXorAssignWith.impl.Op.type.6fa003.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.BitXorAssignWith.impl.Op.type.6fa003.2: type = fn_type @Int.as.BitXorAssignWith.impl.Op.2, @Int.as.BitXorAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.BitXorAssignWith.impl.Op.492b4e.2: %Int.as.BitXorAssignWith.impl.Op.type.6fa003.2 = struct_value () [symbolic] +// CHECK:STDOUT: %BitXorAssignWith.impl_witness.8bd: = impl_witness imports.%BitXorAssignWith.impl_witness_table.ed2, @Int.as.BitXorAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.BitXorAssignWith.impl.Op.type.1a4108.1: type = fn_type @Int.as.BitXorAssignWith.impl.Op.2, @Int.as.BitXorAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.BitXorAssignWith.impl.Op.e58813.1: %Int.as.BitXorAssignWith.impl.Op.type.1a4108.1 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.BitXorAssignWith.impl.Op.type.1a4108.2: type = fn_type @Int.as.BitXorAssignWith.impl.Op.1, @Int.as.BitXorAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.BitXorAssignWith.impl.Op.e58813.2: %Int.as.BitXorAssignWith.impl.Op.type.1a4108.2 = struct_value () [concrete] +// CHECK:STDOUT: %BitXorAssignWith.facet.c03: %BitXorAssignWith.type.ce1 = facet_value %i64, (%BitXorAssignWith.impl_witness.8bd) [concrete] +// CHECK:STDOUT: %BitXorAssignWith.WithSelf.Op.type.426: type = fn_type @BitXorAssignWith.WithSelf.Op, @BitXorAssignWith.WithSelf(%Cpp.long, %BitXorAssignWith.facet.c03) [concrete] +// CHECK:STDOUT: %.6a6: type = fn_type_with_self_type %BitXorAssignWith.WithSelf.Op.type.426, %BitXorAssignWith.facet.c03 [concrete] +// CHECK:STDOUT: %Int.as.BitXorAssignWith.impl.Op.specific_fn.462aaf.1: = specific_function %Int.as.BitXorAssignWith.impl.Op.e58813.2, @Int.as.BitXorAssignWith.impl.Op.1(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.BitXorAssignWith.impl.Op.specific_fn.462aaf.2: = specific_function %Int.as.BitXorAssignWith.impl.Op.e58813.1, @Int.as.BitXorAssignWith.impl.Op.2(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %LeftShiftAssignWith.type.452: type = facet_type <@LeftShiftAssignWith, @LeftShiftAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Int.as.LeftShiftAssignWith.impl.Op.type.2e97cd.1: type = fn_type @Int.as.LeftShiftAssignWith.impl.Op.1, @Int.as.LeftShiftAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.LeftShiftAssignWith.impl.Op.d04a1c.1: %Int.as.LeftShiftAssignWith.impl.Op.type.2e97cd.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.LeftShiftAssignWith.impl.Op.type.2e97cd.2: type = fn_type @Int.as.LeftShiftAssignWith.impl.Op.2, @Int.as.LeftShiftAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.LeftShiftAssignWith.impl.Op.d04a1c.2: %Int.as.LeftShiftAssignWith.impl.Op.type.2e97cd.2 = struct_value () [symbolic] +// CHECK:STDOUT: %LeftShiftAssignWith.impl_witness.1bc: = impl_witness imports.%LeftShiftAssignWith.impl_witness_table.d80, @Int.as.LeftShiftAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.LeftShiftAssignWith.impl.Op.type.a787a7.1: type = fn_type @Int.as.LeftShiftAssignWith.impl.Op.2, @Int.as.LeftShiftAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.LeftShiftAssignWith.impl.Op.070f2b.1: %Int.as.LeftShiftAssignWith.impl.Op.type.a787a7.1 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.LeftShiftAssignWith.impl.Op.type.a787a7.2: type = fn_type @Int.as.LeftShiftAssignWith.impl.Op.1, @Int.as.LeftShiftAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.LeftShiftAssignWith.impl.Op.070f2b.2: %Int.as.LeftShiftAssignWith.impl.Op.type.a787a7.2 = struct_value () [concrete] +// CHECK:STDOUT: %LeftShiftAssignWith.facet.bfb: %LeftShiftAssignWith.type.452 = facet_value %i64, (%LeftShiftAssignWith.impl_witness.1bc) [concrete] +// CHECK:STDOUT: %LeftShiftAssignWith.WithSelf.Op.type.c4c: type = fn_type @LeftShiftAssignWith.WithSelf.Op, @LeftShiftAssignWith.WithSelf(%Cpp.long, %LeftShiftAssignWith.facet.bfb) [concrete] +// CHECK:STDOUT: %.d8e: type = fn_type_with_self_type %LeftShiftAssignWith.WithSelf.Op.type.c4c, %LeftShiftAssignWith.facet.bfb [concrete] +// CHECK:STDOUT: %Int.as.LeftShiftAssignWith.impl.Op.specific_fn.4240fc.1: = specific_function %Int.as.LeftShiftAssignWith.impl.Op.070f2b.2, @Int.as.LeftShiftAssignWith.impl.Op.1(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.LeftShiftAssignWith.impl.Op.specific_fn.4240fc.2: = specific_function %Int.as.LeftShiftAssignWith.impl.Op.070f2b.1, @Int.as.LeftShiftAssignWith.impl.Op.2(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %RightShiftAssignWith.type.f17: type = facet_type <@RightShiftAssignWith, @RightShiftAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %Int.as.RightShiftAssignWith.impl.Op.type.143884.1: type = fn_type @Int.as.RightShiftAssignWith.impl.Op.1, @Int.as.RightShiftAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.RightShiftAssignWith.impl.Op.904f0d.1: %Int.as.RightShiftAssignWith.impl.Op.type.143884.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.RightShiftAssignWith.impl.Op.type.143884.2: type = fn_type @Int.as.RightShiftAssignWith.impl.Op.2, @Int.as.RightShiftAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.RightShiftAssignWith.impl.Op.904f0d.2: %Int.as.RightShiftAssignWith.impl.Op.type.143884.2 = struct_value () [symbolic] +// CHECK:STDOUT: %RightShiftAssignWith.impl_witness.cf7: = impl_witness imports.%RightShiftAssignWith.impl_witness_table.988, @Int.as.RightShiftAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.RightShiftAssignWith.impl.Op.type.6e18c1.1: type = fn_type @Int.as.RightShiftAssignWith.impl.Op.2, @Int.as.RightShiftAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.RightShiftAssignWith.impl.Op.1daed6.1: %Int.as.RightShiftAssignWith.impl.Op.type.6e18c1.1 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.RightShiftAssignWith.impl.Op.type.6e18c1.2: type = fn_type @Int.as.RightShiftAssignWith.impl.Op.1, @Int.as.RightShiftAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.RightShiftAssignWith.impl.Op.1daed6.2: %Int.as.RightShiftAssignWith.impl.Op.type.6e18c1.2 = struct_value () [concrete] +// CHECK:STDOUT: %RightShiftAssignWith.facet.981: %RightShiftAssignWith.type.f17 = facet_value %i64, (%RightShiftAssignWith.impl_witness.cf7) [concrete] +// CHECK:STDOUT: %RightShiftAssignWith.WithSelf.Op.type.c1f: type = fn_type @RightShiftAssignWith.WithSelf.Op, @RightShiftAssignWith.WithSelf(%Cpp.long, %RightShiftAssignWith.facet.981) [concrete] +// CHECK:STDOUT: %.042: type = fn_type_with_self_type %RightShiftAssignWith.WithSelf.Op.type.c1f, %RightShiftAssignWith.facet.981 [concrete] +// CHECK:STDOUT: %Int.as.RightShiftAssignWith.impl.Op.specific_fn.19088e.1: = specific_function %Int.as.RightShiftAssignWith.impl.Op.1daed6.2, @Int.as.RightShiftAssignWith.impl.Op.1(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.RightShiftAssignWith.impl.Op.specific_fn.19088e.2: = specific_function %Int.as.RightShiftAssignWith.impl.Op.1daed6.1, @Int.as.RightShiftAssignWith.impl.Op.2(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { +// CHECK:STDOUT: .long = constants.%Cpp.long +// CHECK:STDOUT: import Cpp//... +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import_ref.06c923.1: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.f73 = impl_witness_table (%Core.import_ref.06c923.1), @Core.IntLiteral.as.ImplicitAs.impl.71b [concrete] +// CHECK:STDOUT: %Core.import_ref.098: @Int.as.AddAssignWith.impl.%Int.as.AddAssignWith.impl.Op.type.2 (%Int.as.AddAssignWith.impl.Op.type.a58fbe.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.AddAssignWith.impl.%Int.as.AddAssignWith.impl.Op.2 (constants.%Int.as.AddAssignWith.impl.Op.45b360.1)] +// CHECK:STDOUT: %AddAssignWith.impl_witness_table.c0b = impl_witness_table (%Core.import_ref.098), @Int.as.AddAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.1b1: @Int.as.AddAssignWith.impl.%Int.as.AddAssignWith.impl.Op.type.1 (%Int.as.AddAssignWith.impl.Op.type.a58fbe.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @Int.as.AddAssignWith.impl.%Int.as.AddAssignWith.impl.Op.1 (constants.%Int.as.AddAssignWith.impl.Op.45b360.2)] +// CHECK:STDOUT: %Core.import_ref.06c923.2: %Cpp.long.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a3a = impl_witness_table (%Core.import_ref.06c923.2), @Cpp.long.as.ImplicitAs.impl.c8d [concrete] +// CHECK:STDOUT: %Core.import_ref.dc62: @Int.as.SubAssignWith.impl.%Int.as.SubAssignWith.impl.Op.type.2 (%Int.as.SubAssignWith.impl.Op.type.8ef325.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.SubAssignWith.impl.%Int.as.SubAssignWith.impl.Op.2 (constants.%Int.as.SubAssignWith.impl.Op.f183ca.1)] +// CHECK:STDOUT: %SubAssignWith.impl_witness_table.ed9 = impl_witness_table (%Core.import_ref.dc62), @Int.as.SubAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.658: @Int.as.SubAssignWith.impl.%Int.as.SubAssignWith.impl.Op.type.1 (%Int.as.SubAssignWith.impl.Op.type.8ef325.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @Int.as.SubAssignWith.impl.%Int.as.SubAssignWith.impl.Op.1 (constants.%Int.as.SubAssignWith.impl.Op.f183ca.2)] +// CHECK:STDOUT: %Core.import_ref.f8f: @Int.as.MulAssignWith.impl.%Int.as.MulAssignWith.impl.Op.type.2 (%Int.as.MulAssignWith.impl.Op.type.99e92a.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.MulAssignWith.impl.%Int.as.MulAssignWith.impl.Op.2 (constants.%Int.as.MulAssignWith.impl.Op.1fe857.1)] +// CHECK:STDOUT: %MulAssignWith.impl_witness_table.bb2 = impl_witness_table (%Core.import_ref.f8f), @Int.as.MulAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.241: @Int.as.MulAssignWith.impl.%Int.as.MulAssignWith.impl.Op.type.1 (%Int.as.MulAssignWith.impl.Op.type.99e92a.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @Int.as.MulAssignWith.impl.%Int.as.MulAssignWith.impl.Op.1 (constants.%Int.as.MulAssignWith.impl.Op.1fe857.2)] +// CHECK:STDOUT: %Core.import_ref.8fd: @Int.as.DivAssignWith.impl.%Int.as.DivAssignWith.impl.Op.type.2 (%Int.as.DivAssignWith.impl.Op.type.33a652.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.DivAssignWith.impl.%Int.as.DivAssignWith.impl.Op.2 (constants.%Int.as.DivAssignWith.impl.Op.e8972a.1)] +// CHECK:STDOUT: %DivAssignWith.impl_witness_table.ff8 = impl_witness_table (%Core.import_ref.8fd), @Int.as.DivAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.0c4: @Int.as.DivAssignWith.impl.%Int.as.DivAssignWith.impl.Op.type.1 (%Int.as.DivAssignWith.impl.Op.type.33a652.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @Int.as.DivAssignWith.impl.%Int.as.DivAssignWith.impl.Op.1 (constants.%Int.as.DivAssignWith.impl.Op.e8972a.2)] +// CHECK:STDOUT: %Core.import_ref.c1a: @Int.as.ModAssignWith.impl.%Int.as.ModAssignWith.impl.Op.type.2 (%Int.as.ModAssignWith.impl.Op.type.42e78c.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.ModAssignWith.impl.%Int.as.ModAssignWith.impl.Op.2 (constants.%Int.as.ModAssignWith.impl.Op.12511c.1)] +// CHECK:STDOUT: %ModAssignWith.impl_witness_table.1e5 = impl_witness_table (%Core.import_ref.c1a), @Int.as.ModAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.820: @Int.as.ModAssignWith.impl.%Int.as.ModAssignWith.impl.Op.type.1 (%Int.as.ModAssignWith.impl.Op.type.42e78c.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @Int.as.ModAssignWith.impl.%Int.as.ModAssignWith.impl.Op.1 (constants.%Int.as.ModAssignWith.impl.Op.12511c.2)] +// CHECK:STDOUT: %Core.import_ref.4a8: @Int.as.BitAndAssignWith.impl.%Int.as.BitAndAssignWith.impl.Op.type.2 (%Int.as.BitAndAssignWith.impl.Op.type.490e73.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.BitAndAssignWith.impl.%Int.as.BitAndAssignWith.impl.Op.2 (constants.%Int.as.BitAndAssignWith.impl.Op.c3b0c6.1)] +// CHECK:STDOUT: %BitAndAssignWith.impl_witness_table.b95 = impl_witness_table (%Core.import_ref.4a8), @Int.as.BitAndAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.929: @Int.as.BitAndAssignWith.impl.%Int.as.BitAndAssignWith.impl.Op.type.1 (%Int.as.BitAndAssignWith.impl.Op.type.490e73.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @Int.as.BitAndAssignWith.impl.%Int.as.BitAndAssignWith.impl.Op.1 (constants.%Int.as.BitAndAssignWith.impl.Op.c3b0c6.2)] +// CHECK:STDOUT: %Core.import_ref.5dd: @Int.as.BitOrAssignWith.impl.%Int.as.BitOrAssignWith.impl.Op.type.2 (%Int.as.BitOrAssignWith.impl.Op.type.f57ae9.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.BitOrAssignWith.impl.%Int.as.BitOrAssignWith.impl.Op.2 (constants.%Int.as.BitOrAssignWith.impl.Op.d3cc0c.1)] +// CHECK:STDOUT: %BitOrAssignWith.impl_witness_table.80a = impl_witness_table (%Core.import_ref.5dd), @Int.as.BitOrAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.c4b: @Int.as.BitOrAssignWith.impl.%Int.as.BitOrAssignWith.impl.Op.type.1 (%Int.as.BitOrAssignWith.impl.Op.type.f57ae9.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @Int.as.BitOrAssignWith.impl.%Int.as.BitOrAssignWith.impl.Op.1 (constants.%Int.as.BitOrAssignWith.impl.Op.d3cc0c.2)] +// CHECK:STDOUT: %Core.import_ref.6fb: @Int.as.BitXorAssignWith.impl.%Int.as.BitXorAssignWith.impl.Op.type.2 (%Int.as.BitXorAssignWith.impl.Op.type.6fa003.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.BitXorAssignWith.impl.%Int.as.BitXorAssignWith.impl.Op.2 (constants.%Int.as.BitXorAssignWith.impl.Op.492b4e.1)] +// CHECK:STDOUT: %BitXorAssignWith.impl_witness_table.ed2 = impl_witness_table (%Core.import_ref.6fb), @Int.as.BitXorAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.f83: @Int.as.BitXorAssignWith.impl.%Int.as.BitXorAssignWith.impl.Op.type.1 (%Int.as.BitXorAssignWith.impl.Op.type.6fa003.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @Int.as.BitXorAssignWith.impl.%Int.as.BitXorAssignWith.impl.Op.1 (constants.%Int.as.BitXorAssignWith.impl.Op.492b4e.2)] +// CHECK:STDOUT: %Core.import_ref.48b6: @Int.as.LeftShiftAssignWith.impl.%Int.as.LeftShiftAssignWith.impl.Op.type.2 (%Int.as.LeftShiftAssignWith.impl.Op.type.2e97cd.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.LeftShiftAssignWith.impl.%Int.as.LeftShiftAssignWith.impl.Op.2 (constants.%Int.as.LeftShiftAssignWith.impl.Op.d04a1c.1)] +// CHECK:STDOUT: %LeftShiftAssignWith.impl_witness_table.d80 = impl_witness_table (%Core.import_ref.48b6), @Int.as.LeftShiftAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.f1f: @Int.as.LeftShiftAssignWith.impl.%Int.as.LeftShiftAssignWith.impl.Op.type.1 (%Int.as.LeftShiftAssignWith.impl.Op.type.2e97cd.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @Int.as.LeftShiftAssignWith.impl.%Int.as.LeftShiftAssignWith.impl.Op.1 (constants.%Int.as.LeftShiftAssignWith.impl.Op.d04a1c.2)] +// CHECK:STDOUT: %Core.import_ref.357: @Int.as.RightShiftAssignWith.impl.%Int.as.RightShiftAssignWith.impl.Op.type.2 (%Int.as.RightShiftAssignWith.impl.Op.type.143884.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.RightShiftAssignWith.impl.%Int.as.RightShiftAssignWith.impl.Op.2 (constants.%Int.as.RightShiftAssignWith.impl.Op.904f0d.1)] +// CHECK:STDOUT: %RightShiftAssignWith.impl_witness_table.988 = impl_witness_table (%Core.import_ref.357), @Int.as.RightShiftAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.447: @Int.as.RightShiftAssignWith.impl.%Int.as.RightShiftAssignWith.impl.Op.type.1 (%Int.as.RightShiftAssignWith.impl.Op.type.143884.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @Int.as.RightShiftAssignWith.impl.%Int.as.RightShiftAssignWith.impl.Op.1 (constants.%Int.as.RightShiftAssignWith.impl.Op.904f0d.2)] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @CompoundAssignmentLongAndI64() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: +// CHECK:STDOUT: %int_1.loc9: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc9: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc9: = bound_method %int_1.loc9, %impl.elem0.loc9 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9: init %Cpp.long = call %bound_method.loc9(%int_1.loc9) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc9_21.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc9_21.2: %Cpp.long = converted %int_1.loc9, %.loc9_21.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc9_13: type = splice_block %long.ref [concrete = constants.%Cpp.long] { +// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %long.ref: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long] +// CHECK:STDOUT: } +// CHECK:STDOUT: %b: %Cpp.long = wrapper_binding b, %.loc9_21.2 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %b.patt: %pattern_type.ada = value_binding_pattern b [concrete = constants.%b.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a.ref.loc10: ref %i64 = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc10: %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc10_5: %.f16 = impl_witness_access constants.%AddAssignWith.impl_witness.3ce, element0 [concrete = constants.%Int.as.AddAssignWith.impl.Op.4484b8.2] +// CHECK:STDOUT: %bound_method.loc10_5.1: = bound_method %a.ref.loc10, %impl.elem0.loc10_5 +// CHECK:STDOUT: %specific_fn.loc10: = specific_function %impl.elem0.loc10_5, @Int.as.AddAssignWith.impl.Op.1(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.AddAssignWith.impl.Op.specific_fn.b74b59.1] +// CHECK:STDOUT: %bound_method.loc10_5.2: = bound_method %a.ref.loc10, %specific_fn.loc10 +// CHECK:STDOUT: %.loc10_5: %Int.as.AddAssignWith.impl.Op.type.d4b879.1 = specific_constant imports.%Core.Op.1b1, @Int.as.AddAssignWith.impl(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.AddAssignWith.impl.Op.4484b8.1] +// CHECK:STDOUT: %Op.ref.loc10: %Int.as.AddAssignWith.impl.Op.type.d4b879.1 = name_ref Op, %.loc10_5 [concrete = constants.%Int.as.AddAssignWith.impl.Op.4484b8.1] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.bound: = bound_method %a.ref.loc10, %Op.ref.loc10 +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc10, @Int.as.AddAssignWith.impl.Op.2(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.AddAssignWith.impl.Op.specific_fn.b74b59.2] +// CHECK:STDOUT: %bound_method.loc10_5.3: = bound_method %a.ref.loc10, %Int.as.AddAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %impl.elem0.loc10_8: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc10_8: = bound_method %b.ref.loc10, %impl.elem0.loc10_8 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc10: init %i64 = call %bound_method.loc10_8(%b.ref.loc10) +// CHECK:STDOUT: %.loc10_8.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc10 +// CHECK:STDOUT: %.loc10_8.2: %i64 = converted %b.ref.loc10, %.loc10_8.1 +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc10_5.3(%a.ref.loc10, %.loc10_8.2) +// CHECK:STDOUT: %a.ref.loc11: ref %i64 = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc11: %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc11_5: %.d91 = impl_witness_access constants.%SubAssignWith.impl_witness.9f7, element0 [concrete = constants.%Int.as.SubAssignWith.impl.Op.880561.2] +// CHECK:STDOUT: %bound_method.loc11_5.1: = bound_method %a.ref.loc11, %impl.elem0.loc11_5 +// CHECK:STDOUT: %specific_fn.loc11: = specific_function %impl.elem0.loc11_5, @Int.as.SubAssignWith.impl.Op.1(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.SubAssignWith.impl.Op.specific_fn.854c3f.1] +// CHECK:STDOUT: %bound_method.loc11_5.2: = bound_method %a.ref.loc11, %specific_fn.loc11 +// CHECK:STDOUT: %.loc11_5: %Int.as.SubAssignWith.impl.Op.type.a048ce.1 = specific_constant imports.%Core.Op.658, @Int.as.SubAssignWith.impl(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.SubAssignWith.impl.Op.880561.1] +// CHECK:STDOUT: %Op.ref.loc11: %Int.as.SubAssignWith.impl.Op.type.a048ce.1 = name_ref Op, %.loc11_5 [concrete = constants.%Int.as.SubAssignWith.impl.Op.880561.1] +// CHECK:STDOUT: %Int.as.SubAssignWith.impl.Op.bound: = bound_method %a.ref.loc11, %Op.ref.loc11 +// CHECK:STDOUT: %Int.as.SubAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc11, @Int.as.SubAssignWith.impl.Op.2(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.SubAssignWith.impl.Op.specific_fn.854c3f.2] +// CHECK:STDOUT: %bound_method.loc11_5.3: = bound_method %a.ref.loc11, %Int.as.SubAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %impl.elem0.loc11_8: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc11_8: = bound_method %b.ref.loc11, %impl.elem0.loc11_8 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc11: init %i64 = call %bound_method.loc11_8(%b.ref.loc11) +// CHECK:STDOUT: %.loc11_8.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc11 +// CHECK:STDOUT: %.loc11_8.2: %i64 = converted %b.ref.loc11, %.loc11_8.1 +// CHECK:STDOUT: %Int.as.SubAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc11_5.3(%a.ref.loc11, %.loc11_8.2) +// CHECK:STDOUT: %a.ref.loc12: ref %i64 = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc12: %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc12_5: %.7b5 = impl_witness_access constants.%MulAssignWith.impl_witness.5a7, element0 [concrete = constants.%Int.as.MulAssignWith.impl.Op.700938.2] +// CHECK:STDOUT: %bound_method.loc12_5.1: = bound_method %a.ref.loc12, %impl.elem0.loc12_5 +// CHECK:STDOUT: %specific_fn.loc12: = specific_function %impl.elem0.loc12_5, @Int.as.MulAssignWith.impl.Op.1(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.MulAssignWith.impl.Op.specific_fn.e90d66.1] +// CHECK:STDOUT: %bound_method.loc12_5.2: = bound_method %a.ref.loc12, %specific_fn.loc12 +// CHECK:STDOUT: %.loc12_5: %Int.as.MulAssignWith.impl.Op.type.25fd2b.1 = specific_constant imports.%Core.Op.241, @Int.as.MulAssignWith.impl(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.MulAssignWith.impl.Op.700938.1] +// CHECK:STDOUT: %Op.ref.loc12: %Int.as.MulAssignWith.impl.Op.type.25fd2b.1 = name_ref Op, %.loc12_5 [concrete = constants.%Int.as.MulAssignWith.impl.Op.700938.1] +// CHECK:STDOUT: %Int.as.MulAssignWith.impl.Op.bound: = bound_method %a.ref.loc12, %Op.ref.loc12 +// CHECK:STDOUT: %Int.as.MulAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc12, @Int.as.MulAssignWith.impl.Op.2(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.MulAssignWith.impl.Op.specific_fn.e90d66.2] +// CHECK:STDOUT: %bound_method.loc12_5.3: = bound_method %a.ref.loc12, %Int.as.MulAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %impl.elem0.loc12_8: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc12_8: = bound_method %b.ref.loc12, %impl.elem0.loc12_8 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc12: init %i64 = call %bound_method.loc12_8(%b.ref.loc12) +// CHECK:STDOUT: %.loc12_8.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc12 +// CHECK:STDOUT: %.loc12_8.2: %i64 = converted %b.ref.loc12, %.loc12_8.1 +// CHECK:STDOUT: %Int.as.MulAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc12_5.3(%a.ref.loc12, %.loc12_8.2) +// CHECK:STDOUT: %a.ref.loc13: ref %i64 = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc13: %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc13_5: %.c68 = impl_witness_access constants.%DivAssignWith.impl_witness.39f, element0 [concrete = constants.%Int.as.DivAssignWith.impl.Op.c6930d.2] +// CHECK:STDOUT: %bound_method.loc13_5.1: = bound_method %a.ref.loc13, %impl.elem0.loc13_5 +// CHECK:STDOUT: %specific_fn.loc13: = specific_function %impl.elem0.loc13_5, @Int.as.DivAssignWith.impl.Op.1(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.DivAssignWith.impl.Op.specific_fn.0454de.1] +// CHECK:STDOUT: %bound_method.loc13_5.2: = bound_method %a.ref.loc13, %specific_fn.loc13 +// CHECK:STDOUT: %.loc13_5: %Int.as.DivAssignWith.impl.Op.type.92ce4f.1 = specific_constant imports.%Core.Op.0c4, @Int.as.DivAssignWith.impl(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.DivAssignWith.impl.Op.c6930d.1] +// CHECK:STDOUT: %Op.ref.loc13: %Int.as.DivAssignWith.impl.Op.type.92ce4f.1 = name_ref Op, %.loc13_5 [concrete = constants.%Int.as.DivAssignWith.impl.Op.c6930d.1] +// CHECK:STDOUT: %Int.as.DivAssignWith.impl.Op.bound: = bound_method %a.ref.loc13, %Op.ref.loc13 +// CHECK:STDOUT: %Int.as.DivAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc13, @Int.as.DivAssignWith.impl.Op.2(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.DivAssignWith.impl.Op.specific_fn.0454de.2] +// CHECK:STDOUT: %bound_method.loc13_5.3: = bound_method %a.ref.loc13, %Int.as.DivAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %impl.elem0.loc13_8: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc13_8: = bound_method %b.ref.loc13, %impl.elem0.loc13_8 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc13: init %i64 = call %bound_method.loc13_8(%b.ref.loc13) +// CHECK:STDOUT: %.loc13_8.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc13 +// CHECK:STDOUT: %.loc13_8.2: %i64 = converted %b.ref.loc13, %.loc13_8.1 +// CHECK:STDOUT: %Int.as.DivAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc13_5.3(%a.ref.loc13, %.loc13_8.2) +// CHECK:STDOUT: %a.ref.loc14: ref %i64 = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc14: %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc14_5: %.360 = impl_witness_access constants.%ModAssignWith.impl_witness.a1c, element0 [concrete = constants.%Int.as.ModAssignWith.impl.Op.b03bdb.2] +// CHECK:STDOUT: %bound_method.loc14_5.1: = bound_method %a.ref.loc14, %impl.elem0.loc14_5 +// CHECK:STDOUT: %specific_fn.loc14: = specific_function %impl.elem0.loc14_5, @Int.as.ModAssignWith.impl.Op.1(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.ModAssignWith.impl.Op.specific_fn.143374.1] +// CHECK:STDOUT: %bound_method.loc14_5.2: = bound_method %a.ref.loc14, %specific_fn.loc14 +// CHECK:STDOUT: %.loc14_5: %Int.as.ModAssignWith.impl.Op.type.9b6f30.1 = specific_constant imports.%Core.Op.820, @Int.as.ModAssignWith.impl(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.ModAssignWith.impl.Op.b03bdb.1] +// CHECK:STDOUT: %Op.ref.loc14: %Int.as.ModAssignWith.impl.Op.type.9b6f30.1 = name_ref Op, %.loc14_5 [concrete = constants.%Int.as.ModAssignWith.impl.Op.b03bdb.1] +// CHECK:STDOUT: %Int.as.ModAssignWith.impl.Op.bound: = bound_method %a.ref.loc14, %Op.ref.loc14 +// CHECK:STDOUT: %Int.as.ModAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc14, @Int.as.ModAssignWith.impl.Op.2(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.ModAssignWith.impl.Op.specific_fn.143374.2] +// CHECK:STDOUT: %bound_method.loc14_5.3: = bound_method %a.ref.loc14, %Int.as.ModAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %impl.elem0.loc14_8: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc14_8: = bound_method %b.ref.loc14, %impl.elem0.loc14_8 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc14: init %i64 = call %bound_method.loc14_8(%b.ref.loc14) +// CHECK:STDOUT: %.loc14_8.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc14 +// CHECK:STDOUT: %.loc14_8.2: %i64 = converted %b.ref.loc14, %.loc14_8.1 +// CHECK:STDOUT: %Int.as.ModAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc14_5.3(%a.ref.loc14, %.loc14_8.2) +// CHECK:STDOUT: %a.ref.loc16: ref %i64 = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc16: %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc16_5: %.706 = impl_witness_access constants.%BitAndAssignWith.impl_witness.2c7, element0 [concrete = constants.%Int.as.BitAndAssignWith.impl.Op.096e1a.2] +// CHECK:STDOUT: %bound_method.loc16_5.1: = bound_method %a.ref.loc16, %impl.elem0.loc16_5 +// CHECK:STDOUT: %specific_fn.loc16: = specific_function %impl.elem0.loc16_5, @Int.as.BitAndAssignWith.impl.Op.1(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.BitAndAssignWith.impl.Op.specific_fn.4f006b.1] +// CHECK:STDOUT: %bound_method.loc16_5.2: = bound_method %a.ref.loc16, %specific_fn.loc16 +// CHECK:STDOUT: %.loc16_5: %Int.as.BitAndAssignWith.impl.Op.type.bbaece.1 = specific_constant imports.%Core.Op.929, @Int.as.BitAndAssignWith.impl(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.BitAndAssignWith.impl.Op.096e1a.1] +// CHECK:STDOUT: %Op.ref.loc16: %Int.as.BitAndAssignWith.impl.Op.type.bbaece.1 = name_ref Op, %.loc16_5 [concrete = constants.%Int.as.BitAndAssignWith.impl.Op.096e1a.1] +// CHECK:STDOUT: %Int.as.BitAndAssignWith.impl.Op.bound: = bound_method %a.ref.loc16, %Op.ref.loc16 +// CHECK:STDOUT: %Int.as.BitAndAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc16, @Int.as.BitAndAssignWith.impl.Op.2(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.BitAndAssignWith.impl.Op.specific_fn.4f006b.2] +// CHECK:STDOUT: %bound_method.loc16_5.3: = bound_method %a.ref.loc16, %Int.as.BitAndAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %impl.elem0.loc16_8: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc16_8: = bound_method %b.ref.loc16, %impl.elem0.loc16_8 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc16: init %i64 = call %bound_method.loc16_8(%b.ref.loc16) +// CHECK:STDOUT: %.loc16_8.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc16 +// CHECK:STDOUT: %.loc16_8.2: %i64 = converted %b.ref.loc16, %.loc16_8.1 +// CHECK:STDOUT: %Int.as.BitAndAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc16_5.3(%a.ref.loc16, %.loc16_8.2) +// CHECK:STDOUT: %a.ref.loc17: ref %i64 = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc17: %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc17_5: %.aa5 = impl_witness_access constants.%BitOrAssignWith.impl_witness.084, element0 [concrete = constants.%Int.as.BitOrAssignWith.impl.Op.508e1b.2] +// CHECK:STDOUT: %bound_method.loc17_5.1: = bound_method %a.ref.loc17, %impl.elem0.loc17_5 +// CHECK:STDOUT: %specific_fn.loc17: = specific_function %impl.elem0.loc17_5, @Int.as.BitOrAssignWith.impl.Op.1(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.BitOrAssignWith.impl.Op.specific_fn.67f0b3.1] +// CHECK:STDOUT: %bound_method.loc17_5.2: = bound_method %a.ref.loc17, %specific_fn.loc17 +// CHECK:STDOUT: %.loc17_5: %Int.as.BitOrAssignWith.impl.Op.type.9c3899.1 = specific_constant imports.%Core.Op.c4b, @Int.as.BitOrAssignWith.impl(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.BitOrAssignWith.impl.Op.508e1b.1] +// CHECK:STDOUT: %Op.ref.loc17: %Int.as.BitOrAssignWith.impl.Op.type.9c3899.1 = name_ref Op, %.loc17_5 [concrete = constants.%Int.as.BitOrAssignWith.impl.Op.508e1b.1] +// CHECK:STDOUT: %Int.as.BitOrAssignWith.impl.Op.bound: = bound_method %a.ref.loc17, %Op.ref.loc17 +// CHECK:STDOUT: %Int.as.BitOrAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc17, @Int.as.BitOrAssignWith.impl.Op.2(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.BitOrAssignWith.impl.Op.specific_fn.67f0b3.2] +// CHECK:STDOUT: %bound_method.loc17_5.3: = bound_method %a.ref.loc17, %Int.as.BitOrAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %impl.elem0.loc17_8: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc17_8: = bound_method %b.ref.loc17, %impl.elem0.loc17_8 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc17: init %i64 = call %bound_method.loc17_8(%b.ref.loc17) +// CHECK:STDOUT: %.loc17_8.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc17 +// CHECK:STDOUT: %.loc17_8.2: %i64 = converted %b.ref.loc17, %.loc17_8.1 +// CHECK:STDOUT: %Int.as.BitOrAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc17_5.3(%a.ref.loc17, %.loc17_8.2) +// CHECK:STDOUT: %a.ref.loc18: ref %i64 = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc18: %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc18_5: %.6a6 = impl_witness_access constants.%BitXorAssignWith.impl_witness.8bd, element0 [concrete = constants.%Int.as.BitXorAssignWith.impl.Op.e58813.2] +// CHECK:STDOUT: %bound_method.loc18_5.1: = bound_method %a.ref.loc18, %impl.elem0.loc18_5 +// CHECK:STDOUT: %specific_fn.loc18: = specific_function %impl.elem0.loc18_5, @Int.as.BitXorAssignWith.impl.Op.1(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.BitXorAssignWith.impl.Op.specific_fn.462aaf.1] +// CHECK:STDOUT: %bound_method.loc18_5.2: = bound_method %a.ref.loc18, %specific_fn.loc18 +// CHECK:STDOUT: %.loc18_5: %Int.as.BitXorAssignWith.impl.Op.type.1a4108.1 = specific_constant imports.%Core.Op.f83, @Int.as.BitXorAssignWith.impl(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.BitXorAssignWith.impl.Op.e58813.1] +// CHECK:STDOUT: %Op.ref.loc18: %Int.as.BitXorAssignWith.impl.Op.type.1a4108.1 = name_ref Op, %.loc18_5 [concrete = constants.%Int.as.BitXorAssignWith.impl.Op.e58813.1] +// CHECK:STDOUT: %Int.as.BitXorAssignWith.impl.Op.bound: = bound_method %a.ref.loc18, %Op.ref.loc18 +// CHECK:STDOUT: %Int.as.BitXorAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc18, @Int.as.BitXorAssignWith.impl.Op.2(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.BitXorAssignWith.impl.Op.specific_fn.462aaf.2] +// CHECK:STDOUT: %bound_method.loc18_5.3: = bound_method %a.ref.loc18, %Int.as.BitXorAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %impl.elem0.loc18_8: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc18_8: = bound_method %b.ref.loc18, %impl.elem0.loc18_8 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc18: init %i64 = call %bound_method.loc18_8(%b.ref.loc18) +// CHECK:STDOUT: %.loc18_8.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc18 +// CHECK:STDOUT: %.loc18_8.2: %i64 = converted %b.ref.loc18, %.loc18_8.1 +// CHECK:STDOUT: %Int.as.BitXorAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc18_5.3(%a.ref.loc18, %.loc18_8.2) +// CHECK:STDOUT: %a.ref.loc19: ref %i64 = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc19: %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc19_5: %.d8e = impl_witness_access constants.%LeftShiftAssignWith.impl_witness.1bc, element0 [concrete = constants.%Int.as.LeftShiftAssignWith.impl.Op.070f2b.2] +// CHECK:STDOUT: %bound_method.loc19_5.1: = bound_method %a.ref.loc19, %impl.elem0.loc19_5 +// CHECK:STDOUT: %specific_fn.loc19: = specific_function %impl.elem0.loc19_5, @Int.as.LeftShiftAssignWith.impl.Op.1(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.LeftShiftAssignWith.impl.Op.specific_fn.4240fc.1] +// CHECK:STDOUT: %bound_method.loc19_5.2: = bound_method %a.ref.loc19, %specific_fn.loc19 +// CHECK:STDOUT: %.loc19_5: %Int.as.LeftShiftAssignWith.impl.Op.type.a787a7.1 = specific_constant imports.%Core.Op.f1f, @Int.as.LeftShiftAssignWith.impl(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.LeftShiftAssignWith.impl.Op.070f2b.1] +// CHECK:STDOUT: %Op.ref.loc19: %Int.as.LeftShiftAssignWith.impl.Op.type.a787a7.1 = name_ref Op, %.loc19_5 [concrete = constants.%Int.as.LeftShiftAssignWith.impl.Op.070f2b.1] +// CHECK:STDOUT: %Int.as.LeftShiftAssignWith.impl.Op.bound: = bound_method %a.ref.loc19, %Op.ref.loc19 +// CHECK:STDOUT: %Int.as.LeftShiftAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc19, @Int.as.LeftShiftAssignWith.impl.Op.2(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.LeftShiftAssignWith.impl.Op.specific_fn.4240fc.2] +// CHECK:STDOUT: %bound_method.loc19_5.3: = bound_method %a.ref.loc19, %Int.as.LeftShiftAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %impl.elem0.loc19_9: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc19_9: = bound_method %b.ref.loc19, %impl.elem0.loc19_9 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc19: init %i64 = call %bound_method.loc19_9(%b.ref.loc19) +// CHECK:STDOUT: %.loc19_9.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc19 +// CHECK:STDOUT: %.loc19_9.2: %i64 = converted %b.ref.loc19, %.loc19_9.1 +// CHECK:STDOUT: %Int.as.LeftShiftAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc19_5.3(%a.ref.loc19, %.loc19_9.2) +// CHECK:STDOUT: %a.ref.loc20: ref %i64 = name_ref a, %a +// CHECK:STDOUT: %b.ref.loc20: %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc20_5: %.042 = impl_witness_access constants.%RightShiftAssignWith.impl_witness.cf7, element0 [concrete = constants.%Int.as.RightShiftAssignWith.impl.Op.1daed6.2] +// CHECK:STDOUT: %bound_method.loc20_5.1: = bound_method %a.ref.loc20, %impl.elem0.loc20_5 +// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20_5, @Int.as.RightShiftAssignWith.impl.Op.1(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.RightShiftAssignWith.impl.Op.specific_fn.19088e.1] +// CHECK:STDOUT: %bound_method.loc20_5.2: = bound_method %a.ref.loc20, %specific_fn.loc20 +// CHECK:STDOUT: %.loc20_5: %Int.as.RightShiftAssignWith.impl.Op.type.6e18c1.1 = specific_constant imports.%Core.Op.447, @Int.as.RightShiftAssignWith.impl(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.RightShiftAssignWith.impl.Op.1daed6.1] +// CHECK:STDOUT: %Op.ref.loc20: %Int.as.RightShiftAssignWith.impl.Op.type.6e18c1.1 = name_ref Op, %.loc20_5 [concrete = constants.%Int.as.RightShiftAssignWith.impl.Op.1daed6.1] +// CHECK:STDOUT: %Int.as.RightShiftAssignWith.impl.Op.bound: = bound_method %a.ref.loc20, %Op.ref.loc20 +// CHECK:STDOUT: %Int.as.RightShiftAssignWith.impl.Op.specific_fn: = specific_function %Op.ref.loc20, @Int.as.RightShiftAssignWith.impl.Op.2(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.RightShiftAssignWith.impl.Op.specific_fn.19088e.2] +// CHECK:STDOUT: %bound_method.loc20_5.3: = bound_method %a.ref.loc20, %Int.as.RightShiftAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %impl.elem0.loc20_9: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc20_9: = bound_method %b.ref.loc20, %impl.elem0.loc20_9 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call.loc20: init %i64 = call %bound_method.loc20_9(%b.ref.loc20) +// CHECK:STDOUT: %.loc20_9.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc20 +// CHECK:STDOUT: %.loc20_9.2: %i64 = converted %b.ref.loc20, %.loc20_9.1 +// CHECK:STDOUT: %Int.as.RightShiftAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc20_5.3(%a.ref.loc20, %.loc20_9.2) +// CHECK:STDOUT: +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- compound_assignment_heterogeneous_long_and_int_literal.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %Cpp.long: type = class_type @Long64 [concrete] +// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] +// CHECK:STDOUT: %i64: type = class_type @Int, @Int(%int_64) [concrete] +// CHECK:STDOUT: %i64.builtin: type = int_type signed, %int_64 [concrete] +// CHECK:STDOUT: %pattern_type.ada: type = pattern_type %Cpp.long [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.ada = ref_binding_pattern a [concrete] +// CHECK:STDOUT: %a.var_patt: %pattern_type.ada = var_pattern %a.patt [concrete] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.340: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long)> [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.5a7: = impl_witness imports.%ImplicitAs.impl_witness_table.f73 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.5a7) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.562: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Cpp.long, %ImplicitAs.facet) [concrete] +// CHECK:STDOUT: %.6dd: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.562, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %int_1.33f: %Cpp.long = int_value 1 [concrete] +// CHECK:STDOUT: %AddAssignWith.type.5ab: type = facet_type <@AddAssignWith, @AddAssignWith(Core.IntLiteral)> [concrete] +// CHECK:STDOUT: %U.1ae: %ImplicitAs.type.340 = symbolic_binding U, 0 [symbolic] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.type.1757be.1: type = fn_type @Cpp.long.as.AddAssignWith.impl.Op.1, @Cpp.long.as.AddAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.1fe1da.1: %Cpp.long.as.AddAssignWith.impl.Op.type.1757be.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.type.1757be.2: type = fn_type @Cpp.long.as.AddAssignWith.impl.Op.2, @Cpp.long.as.AddAssignWith.impl(%U.1ae) [symbolic] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.1fe1da.2: %Cpp.long.as.AddAssignWith.impl.Op.type.1757be.2 = struct_value () [symbolic] +// CHECK:STDOUT: %AddAssignWith.impl_witness.fe0: = impl_witness imports.%AddAssignWith.impl_witness_table.338, @Cpp.long.as.AddAssignWith.impl(%ImplicitAs.facet) [concrete] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.type.6a6c21.1: type = fn_type @Cpp.long.as.AddAssignWith.impl.Op.2, @Cpp.long.as.AddAssignWith.impl(%ImplicitAs.facet) [concrete] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.c9f5c8.1: %Cpp.long.as.AddAssignWith.impl.Op.type.6a6c21.1 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.type.6a6c21.2: type = fn_type @Cpp.long.as.AddAssignWith.impl.Op.1, @Cpp.long.as.AddAssignWith.impl(%ImplicitAs.facet) [concrete] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.c9f5c8.2: %Cpp.long.as.AddAssignWith.impl.Op.type.6a6c21.2 = struct_value () [concrete] +// CHECK:STDOUT: %AddAssignWith.facet.d04: %AddAssignWith.type.5ab = facet_value %Cpp.long, (%AddAssignWith.impl_witness.fe0) [concrete] +// CHECK:STDOUT: %AddAssignWith.WithSelf.Op.type.90a: type = fn_type @AddAssignWith.WithSelf.Op, @AddAssignWith.WithSelf(Core.IntLiteral, %AddAssignWith.facet.d04) [concrete] +// CHECK:STDOUT: %.753: type = fn_type_with_self_type %AddAssignWith.WithSelf.Op.type.90a, %AddAssignWith.facet.d04 [concrete] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.specific_fn.f4c4ac.1: = specific_function %Cpp.long.as.AddAssignWith.impl.Op.c9f5c8.2, @Cpp.long.as.AddAssignWith.impl.Op.1(%ImplicitAs.facet) [concrete] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.specific_fn.f4c4ac.2: = specific_function %Cpp.long.as.AddAssignWith.impl.Op.c9f5c8.1, @Cpp.long.as.AddAssignWith.impl.Op.2(%ImplicitAs.facet) [concrete] +// CHECK:STDOUT: %Destroy.Op.type.1d8f74.3: type = fn_type @Destroy.Op.loc8_3.3 [concrete] +// CHECK:STDOUT: %Destroy.Op.1a2547.3: %Destroy.Op.type.1d8f74.3 = struct_value () [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { +// CHECK:STDOUT: .long = constants.%Cpp.long +// CHECK:STDOUT: import Cpp//... +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import_ref.06c: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.f73 = impl_witness_table (%Core.import_ref.06c), @Core.IntLiteral.as.ImplicitAs.impl.71b [concrete] +// CHECK:STDOUT: %Core.import_ref.d3c: @Cpp.long.as.AddAssignWith.impl.%Cpp.long.as.AddAssignWith.impl.Op.type.2 (%Cpp.long.as.AddAssignWith.impl.Op.type.1757be.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.AddAssignWith.impl.%Cpp.long.as.AddAssignWith.impl.Op.2 (constants.%Cpp.long.as.AddAssignWith.impl.Op.1fe1da.1)] +// CHECK:STDOUT: %AddAssignWith.impl_witness_table.338 = impl_witness_table (%Core.import_ref.d3c), @Cpp.long.as.AddAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.373: @Cpp.long.as.AddAssignWith.impl.%Cpp.long.as.AddAssignWith.impl.Op.type.1 (%Cpp.long.as.AddAssignWith.impl.Op.type.1757be.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.AddAssignWith.impl.%Cpp.long.as.AddAssignWith.impl.Op.1 (constants.%Cpp.long.as.AddAssignWith.impl.Op.1fe1da.2)] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @CompoundAssignmentLongAndIntLiteral() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: %a.var: ref %Cpp.long = var_storage %a.var_patt +// CHECK:STDOUT: %int_1.loc8: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc8: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc8: = bound_method %int_1.loc8, %impl.elem0.loc8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8: init %Cpp.long = call %bound_method.loc8(%int_1.loc8) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc8_3: init %Cpp.long = converted %int_1.loc8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: assign %a.var, %.loc8_3 +// CHECK:STDOUT: %.loc8_13: type = splice_block %long.ref [concrete = constants.%Cpp.long] { +// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %long.ref: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a: ref %Cpp.long = wrapper_binding a, %a.var +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %a.patt: %pattern_type.ada = ref_binding_pattern a [concrete = constants.%a.patt] +// CHECK:STDOUT: %a.var_patt: %pattern_type.ada = var_pattern %a.patt [concrete = constants.%a.var_patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a.ref: ref %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %int_1.loc9: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc9_5: %.753 = impl_witness_access constants.%AddAssignWith.impl_witness.fe0, element0 [concrete = constants.%Cpp.long.as.AddAssignWith.impl.Op.c9f5c8.2] +// CHECK:STDOUT: %bound_method.loc9_5.1: = bound_method %a.ref, %impl.elem0.loc9_5 +// CHECK:STDOUT: %ImplicitAs.facet.loc9_5.1: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet] +// CHECK:STDOUT: %.loc9_5.1: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc9_5.1 [concrete = constants.%ImplicitAs.facet] +// CHECK:STDOUT: %ImplicitAs.facet.loc9_5.2: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a7) [concrete = constants.%ImplicitAs.facet] +// CHECK:STDOUT: %.loc9_5.2: %ImplicitAs.type.340 = converted Core.IntLiteral, %ImplicitAs.facet.loc9_5.2 [concrete = constants.%ImplicitAs.facet] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc9_5, @Cpp.long.as.AddAssignWith.impl.Op.1(constants.%ImplicitAs.facet) [concrete = constants.%Cpp.long.as.AddAssignWith.impl.Op.specific_fn.f4c4ac.1] +// CHECK:STDOUT: %bound_method.loc9_5.2: = bound_method %a.ref, %specific_fn +// CHECK:STDOUT: %.loc9_5.3: %Cpp.long.as.AddAssignWith.impl.Op.type.6a6c21.1 = specific_constant imports.%Core.Op.373, @Cpp.long.as.AddAssignWith.impl(constants.%ImplicitAs.facet) [concrete = constants.%Cpp.long.as.AddAssignWith.impl.Op.c9f5c8.1] +// CHECK:STDOUT: %Op.ref: %Cpp.long.as.AddAssignWith.impl.Op.type.6a6c21.1 = name_ref Op, %.loc9_5.3 [concrete = constants.%Cpp.long.as.AddAssignWith.impl.Op.c9f5c8.1] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.bound: = bound_method %a.ref, %Op.ref +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.specific_fn: = specific_function %Op.ref, @Cpp.long.as.AddAssignWith.impl.Op.2(constants.%ImplicitAs.facet) [concrete = constants.%Cpp.long.as.AddAssignWith.impl.Op.specific_fn.f4c4ac.2] +// CHECK:STDOUT: %bound_method.loc9_5.3: = bound_method %a.ref, %Cpp.long.as.AddAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %impl.elem0.loc9_8: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc9_8: = bound_method %int_1.loc9, %impl.elem0.loc9_8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9: init %Cpp.long = call %bound_method.loc9_8(%int_1.loc9) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc9_8.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc9_8.2: %Cpp.long = converted %int_1.loc9, %.loc9_8.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %Cpp.long.as.AddAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc9_5.3(%a.ref, %.loc9_8.2) +// CHECK:STDOUT: %Destroy.Op.bound: = bound_method %a.var, constants.%Destroy.Op.1a2547.3 +// CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%a.var) +// CHECK:STDOUT: +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc8_3.1(%self.param: ref %i64.builtin) = "no_op"; +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc8_3.2(%self.param: ref %i64) { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc8_3.3(%self.param: ref %Cpp.long) { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- compound_assignment_heterogeneous_long_and_runtime_i64.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] +// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] +// CHECK:STDOUT: %Int.67af24.1: type = class_type @Int, @Int(%N) [symbolic] +// CHECK:STDOUT: %i64: type = class_type @Int, @Int(%int_64) [concrete] +// CHECK:STDOUT: %i64.builtin: type = int_type signed, %int_64 [concrete] +// CHECK:STDOUT: %pattern_type.f57: type = pattern_type %i64 [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.f57 = ref_binding_pattern a [concrete] +// CHECK:STDOUT: %a.var_patt: %pattern_type.f57 = var_pattern %a.patt [concrete] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.221: type = facet_type <@ImplicitAs, @ImplicitAs(%i64)> [concrete] +// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1, @Core.IntLiteral.as.ImplicitAs.impl.0e9(%To) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.845: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.091: = impl_witness imports.%ImplicitAs.impl_witness_table.b3c, @Core.IntLiteral.as.ImplicitAs.impl.0e9(%int_64) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.55a: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1, @Core.IntLiteral.as.ImplicitAs.impl.0e9(%int_64) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.a1b: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.55a = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.6e8: %ImplicitAs.type.221 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.091) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.a04: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i64, %ImplicitAs.facet.6e8) [concrete] +// CHECK:STDOUT: %.f34: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.a04, %ImplicitAs.facet.6e8 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.89f: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.a1b [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.a1b, @Core.IntLiteral.as.ImplicitAs.impl.Convert.1(%int_64) [concrete] +// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] +// CHECK:STDOUT: %int_1.d98: %i64 = int_value 1 [concrete] +// CHECK:STDOUT: %Cpp.long: type = class_type @Long64 [concrete] +// CHECK:STDOUT: %pattern_type.ada: type = pattern_type %Cpp.long [concrete] +// CHECK:STDOUT: %b.patt: %pattern_type.ada = value_binding_pattern b [concrete] +// CHECK:STDOUT: %ImplicitAs.type.340: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long)> [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.5a7: = impl_witness imports.%ImplicitAs.impl_witness_table.f73 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.210: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.5a7) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.562: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Cpp.long, %ImplicitAs.facet.210) [concrete] +// CHECK:STDOUT: %.6dd: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.562, %ImplicitAs.facet.210 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce [concrete] +// CHECK:STDOUT: %int_1.33f: %Cpp.long = int_value 1 [concrete] +// CHECK:STDOUT: %AddAssignWith.type.e06: type = facet_type <@AddAssignWith, @AddAssignWith(%Cpp.long)> [concrete] +// CHECK:STDOUT: %ImplicitAs.type.f7de31.2: type = facet_type <@ImplicitAs, @ImplicitAs(%Int.67af24.1)> [symbolic] +// CHECK:STDOUT: %U.4e6: %ImplicitAs.type.f7de31.2 = symbolic_binding U, 1 [symbolic] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.type.a58fbe.1: type = fn_type @Int.as.AddAssignWith.impl.Op.1, @Int.as.AddAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.45b360.1: %Int.as.AddAssignWith.impl.Op.type.a58fbe.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.type.a58fbe.2: type = fn_type @Int.as.AddAssignWith.impl.Op.2, @Int.as.AddAssignWith.impl(%N, %U.4e6) [symbolic] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.45b360.2: %Int.as.AddAssignWith.impl.Op.type.a58fbe.2 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.43c: = impl_witness imports.%ImplicitAs.impl_witness_table.a3a [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.c71: %ImplicitAs.type.221 = facet_value %Cpp.long, (%ImplicitAs.impl_witness.43c) [concrete] +// CHECK:STDOUT: %AddAssignWith.impl_witness.3ce: = impl_witness imports.%AddAssignWith.impl_witness_table.c0b, @Int.as.AddAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.type.d4b879.1: type = fn_type @Int.as.AddAssignWith.impl.Op.2, @Int.as.AddAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.4484b8.1: %Int.as.AddAssignWith.impl.Op.type.d4b879.1 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.type.d4b879.2: type = fn_type @Int.as.AddAssignWith.impl.Op.1, @Int.as.AddAssignWith.impl(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.4484b8.2: %Int.as.AddAssignWith.impl.Op.type.d4b879.2 = struct_value () [concrete] +// CHECK:STDOUT: %AddAssignWith.facet.2ea: %AddAssignWith.type.e06 = facet_value %i64, (%AddAssignWith.impl_witness.3ce) [concrete] +// CHECK:STDOUT: %AddAssignWith.WithSelf.Op.type.987: type = fn_type @AddAssignWith.WithSelf.Op, @AddAssignWith.WithSelf(%Cpp.long, %AddAssignWith.facet.2ea) [concrete] +// CHECK:STDOUT: %.f16: type = fn_type_with_self_type %AddAssignWith.WithSelf.Op.type.987, %AddAssignWith.facet.2ea [concrete] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.specific_fn.b74b59.1: = specific_function %Int.as.AddAssignWith.impl.Op.4484b8.2, @Int.as.AddAssignWith.impl.Op.1(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.specific_fn.b74b59.2: = specific_function %Int.as.AddAssignWith.impl.Op.4484b8.1, @Int.as.AddAssignWith.impl.Op.2(%int_64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.294: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i64, %ImplicitAs.facet.c71) [concrete] +// CHECK:STDOUT: %.9e1: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.294, %ImplicitAs.facet.c71 [concrete] +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.type: type = fn_type @Cpp.long.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert: %Cpp.long.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] +// CHECK:STDOUT: %Destroy.Op.type.1d8f74.2: type = fn_type @Destroy.Op.loc8_3.2 [concrete] +// CHECK:STDOUT: %Destroy.Op.1a2547.2: %Destroy.Op.type.1d8f74.2 = struct_value () [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { +// CHECK:STDOUT: .long = constants.%Cpp.long +// CHECK:STDOUT: import Cpp//... +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import_ref.edf: @Core.IntLiteral.as.ImplicitAs.impl.0e9.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.0e9.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.845)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.b3c = impl_witness_table (%Core.import_ref.edf), @Core.IntLiteral.as.ImplicitAs.impl.0e9 [concrete] +// CHECK:STDOUT: %Core.import_ref.06c923.1: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.f73 = impl_witness_table (%Core.import_ref.06c923.1), @Core.IntLiteral.as.ImplicitAs.impl.71b [concrete] +// CHECK:STDOUT: %Core.import_ref.098: @Int.as.AddAssignWith.impl.%Int.as.AddAssignWith.impl.Op.type.2 (%Int.as.AddAssignWith.impl.Op.type.a58fbe.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.AddAssignWith.impl.%Int.as.AddAssignWith.impl.Op.2 (constants.%Int.as.AddAssignWith.impl.Op.45b360.1)] +// CHECK:STDOUT: %AddAssignWith.impl_witness_table.c0b = impl_witness_table (%Core.import_ref.098), @Int.as.AddAssignWith.impl [concrete] +// CHECK:STDOUT: %Core.Op.1b1: @Int.as.AddAssignWith.impl.%Int.as.AddAssignWith.impl.Op.type.1 (%Int.as.AddAssignWith.impl.Op.type.a58fbe.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @Int.as.AddAssignWith.impl.%Int.as.AddAssignWith.impl.Op.1 (constants.%Int.as.AddAssignWith.impl.Op.45b360.2)] +// CHECK:STDOUT: %Core.import_ref.06c923.2: %Cpp.long.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a3a = impl_witness_table (%Core.import_ref.06c923.2), @Cpp.long.as.ImplicitAs.impl.c8d [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @CompoundAssignmentLongAndRuntimeI64() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: %a.var: ref %i64 = var_storage %a.var_patt +// CHECK:STDOUT: %int_1.loc8: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc8: %.f34 = impl_witness_access constants.%ImplicitAs.impl_witness.091, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a1b] +// CHECK:STDOUT: %bound_method.loc8_3.1: = bound_method %int_1.loc8, %impl.elem0.loc8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.89f] +// CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Core.IntLiteral.as.ImplicitAs.impl.Convert.1(constants.%int_64) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc8_3.2: = bound_method %int_1.loc8, %specific_fn.loc8 [concrete = constants.%bound_method] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8: init %i64 = call %bound_method.loc8_3.2(%int_1.loc8) [concrete = constants.%int_1.d98] +// CHECK:STDOUT: %.loc8: init %i64 = converted %int_1.loc8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8 [concrete = constants.%int_1.d98] +// CHECK:STDOUT: assign %a.var, %.loc8 +// CHECK:STDOUT: %i64: type = type_literal constants.%i64 [concrete = constants.%i64] +// CHECK:STDOUT: %a: ref %i64 = wrapper_binding a, %a.var +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %a.patt: %pattern_type.f57 = ref_binding_pattern a [concrete = constants.%a.patt] +// CHECK:STDOUT: %a.var_patt: %pattern_type.f57 = var_pattern %a.patt [concrete = constants.%a.var_patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %int_1.loc9: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc9: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc9: = bound_method %int_1.loc9, %impl.elem0.loc9 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9: init %Cpp.long = call %bound_method.loc9(%int_1.loc9) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc9_21.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc9_21.2: %Cpp.long = converted %int_1.loc9, %.loc9_21.1 [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc9_13: type = splice_block %long.ref [concrete = constants.%Cpp.long] { +// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %long.ref: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long] +// CHECK:STDOUT: } +// CHECK:STDOUT: %b: %Cpp.long = wrapper_binding b, %.loc9_21.2 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %b.patt: %pattern_type.ada = value_binding_pattern b [concrete = constants.%b.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a.ref: ref %i64 = name_ref a, %a +// CHECK:STDOUT: %b.ref: %Cpp.long = name_ref b, %b +// CHECK:STDOUT: %impl.elem0.loc10_5: %.f16 = impl_witness_access constants.%AddAssignWith.impl_witness.3ce, element0 [concrete = constants.%Int.as.AddAssignWith.impl.Op.4484b8.2] +// CHECK:STDOUT: %bound_method.loc10_5.1: = bound_method %a.ref, %impl.elem0.loc10_5 +// CHECK:STDOUT: %specific_fn.loc10: = specific_function %impl.elem0.loc10_5, @Int.as.AddAssignWith.impl.Op.1(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.AddAssignWith.impl.Op.specific_fn.b74b59.1] +// CHECK:STDOUT: %bound_method.loc10_5.2: = bound_method %a.ref, %specific_fn.loc10 +// CHECK:STDOUT: %.loc10_5: %Int.as.AddAssignWith.impl.Op.type.d4b879.1 = specific_constant imports.%Core.Op.1b1, @Int.as.AddAssignWith.impl(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.AddAssignWith.impl.Op.4484b8.1] +// CHECK:STDOUT: %Op.ref: %Int.as.AddAssignWith.impl.Op.type.d4b879.1 = name_ref Op, %.loc10_5 [concrete = constants.%Int.as.AddAssignWith.impl.Op.4484b8.1] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.bound: = bound_method %a.ref, %Op.ref +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.specific_fn: = specific_function %Op.ref, @Int.as.AddAssignWith.impl.Op.2(constants.%int_64, constants.%ImplicitAs.facet.c71) [concrete = constants.%Int.as.AddAssignWith.impl.Op.specific_fn.b74b59.2] +// CHECK:STDOUT: %bound_method.loc10_5.3: = bound_method %a.ref, %Int.as.AddAssignWith.impl.Op.specific_fn +// CHECK:STDOUT: %impl.elem0.loc10_8: %.9e1 = impl_witness_access constants.%ImplicitAs.impl_witness.43c, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc10_8: = bound_method %b.ref, %impl.elem0.loc10_8 +// CHECK:STDOUT: %Cpp.long.as.ImplicitAs.impl.Convert.call: init %i64 = call %bound_method.loc10_8(%b.ref) +// CHECK:STDOUT: %.loc10_8.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call +// CHECK:STDOUT: %.loc10_8.2: %i64 = converted %b.ref, %.loc10_8.1 +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc10_5.3(%a.ref, %.loc10_8.2) +// CHECK:STDOUT: %Destroy.Op.bound: = bound_method %a.var, constants.%Destroy.Op.1a2547.2 +// CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%a.var) +// CHECK:STDOUT: +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc8_3.1(%self.param: ref %i64.builtin) = "no_op"; +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc8_3.2(%self.param: ref %i64) { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- increment_decrement_long.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %Cpp.long: type = class_type @Long64 [concrete] +// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] +// CHECK:STDOUT: %i64: type = class_type @Int, @Int(%int_64) [concrete] +// CHECK:STDOUT: %i64.builtin: type = int_type signed, %int_64 [concrete] +// CHECK:STDOUT: %pattern_type.ada: type = pattern_type %Cpp.long [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.ada = ref_binding_pattern a [concrete] +// CHECK:STDOUT: %a.var_patt: %pattern_type.ada = var_pattern %a.patt [concrete] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.340: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long)> [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.5a7: = impl_witness imports.%ImplicitAs.impl_witness_table.f73 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.340 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.5a7) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.562: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Cpp.long, %ImplicitAs.facet) [concrete] +// CHECK:STDOUT: %.6dd: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.562, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %int_1.33f: %Cpp.long = int_value 1 [concrete] +// CHECK:STDOUT: %Inc.type: type = facet_type <@Inc> [concrete] +// CHECK:STDOUT: %Inc.impl_witness: = impl_witness imports.%Inc.impl_witness_table [concrete] +// CHECK:STDOUT: %Inc.facet: %Inc.type = facet_value %Cpp.long, (%Inc.impl_witness) [concrete] +// CHECK:STDOUT: %Inc.WithSelf.Op.type.c9e: type = fn_type @Inc.WithSelf.Op, @Inc.WithSelf(%Inc.facet) [concrete] +// CHECK:STDOUT: %.4d7: type = fn_type_with_self_type %Inc.WithSelf.Op.type.c9e, %Inc.facet [concrete] +// CHECK:STDOUT: %Cpp.long.as.Inc.impl.Op.type: type = fn_type @Cpp.long.as.Inc.impl.Op [concrete] +// CHECK:STDOUT: %Cpp.long.as.Inc.impl.Op: %Cpp.long.as.Inc.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %Dec.type: type = facet_type <@Dec> [concrete] +// CHECK:STDOUT: %Dec.impl_witness: = impl_witness imports.%Dec.impl_witness_table [concrete] +// CHECK:STDOUT: %Dec.facet: %Dec.type = facet_value %Cpp.long, (%Dec.impl_witness) [concrete] +// CHECK:STDOUT: %Dec.WithSelf.Op.type.6d1: type = fn_type @Dec.WithSelf.Op, @Dec.WithSelf(%Dec.facet) [concrete] +// CHECK:STDOUT: %.974: type = fn_type_with_self_type %Dec.WithSelf.Op.type.6d1, %Dec.facet [concrete] +// CHECK:STDOUT: %Cpp.long.as.Dec.impl.Op.type: type = fn_type @Cpp.long.as.Dec.impl.Op [concrete] +// CHECK:STDOUT: %Cpp.long.as.Dec.impl.Op: %Cpp.long.as.Dec.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %Destroy.Op.type.1d8f74.3: type = fn_type @Destroy.Op.loc8_3.3 [concrete] +// CHECK:STDOUT: %Destroy.Op.1a2547.3: %Destroy.Op.type.1d8f74.3 = struct_value () [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { +// CHECK:STDOUT: .long = constants.%Cpp.long +// CHECK:STDOUT: import Cpp//... +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import_ref.06c: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.f73 = impl_witness_table (%Core.import_ref.06c), @Core.IntLiteral.as.ImplicitAs.impl.71b [concrete] +// CHECK:STDOUT: %Core.import_ref.9c3475.1: %Cpp.long.as.Inc.impl.Op.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.Inc.impl.Op] +// CHECK:STDOUT: %Inc.impl_witness_table = impl_witness_table (%Core.import_ref.9c3475.1), @Cpp.long.as.Inc.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.9c3475.2: %Cpp.long.as.Dec.impl.Op.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.Dec.impl.Op] +// CHECK:STDOUT: %Dec.impl_witness_table = impl_witness_table (%Core.import_ref.9c3475.2), @Cpp.long.as.Dec.impl [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @IncrementDecrementLong() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: %a.var: ref %Cpp.long = var_storage %a.var_patt +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc8: %.6dd = impl_witness_access constants.%ImplicitAs.impl_witness.5a7, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc8: = bound_method %int_1, %impl.elem0.loc8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %Cpp.long = call %bound_method.loc8(%int_1) [concrete = constants.%int_1.33f] +// CHECK:STDOUT: %.loc8_3: init %Cpp.long = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.33f] +// CHECK:STDOUT: assign %a.var, %.loc8_3 +// CHECK:STDOUT: %.loc8_13: type = splice_block %long.ref [concrete = constants.%Cpp.long] { +// CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %long.ref: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a: ref %Cpp.long = wrapper_binding a, %a.var +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %a.patt: %pattern_type.ada = ref_binding_pattern a [concrete = constants.%a.patt] +// CHECK:STDOUT: %a.var_patt: %pattern_type.ada = var_pattern %a.patt [concrete = constants.%a.var_patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a.ref.loc9: ref %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %impl.elem0.loc9: %.4d7 = impl_witness_access constants.%Inc.impl_witness, element0 [concrete = constants.%Cpp.long.as.Inc.impl.Op] +// CHECK:STDOUT: %bound_method.loc9: = bound_method %a.ref.loc9, %impl.elem0.loc9 +// CHECK:STDOUT: %Cpp.long.as.Inc.impl.Op.call: init %empty_tuple.type = call %bound_method.loc9(%a.ref.loc9) +// CHECK:STDOUT: %a.ref.loc10: ref %Cpp.long = name_ref a, %a +// CHECK:STDOUT: %impl.elem0.loc10: %.974 = impl_witness_access constants.%Dec.impl_witness, element0 [concrete = constants.%Cpp.long.as.Dec.impl.Op] +// CHECK:STDOUT: %bound_method.loc10: = bound_method %a.ref.loc10, %impl.elem0.loc10 +// CHECK:STDOUT: %Cpp.long.as.Dec.impl.Op.call: init %empty_tuple.type = call %bound_method.loc10(%a.ref.loc10) +// CHECK:STDOUT: %Destroy.Op.bound: = bound_method %a.var, constants.%Destroy.Op.1a2547.3 +// CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%a.var) +// CHECK:STDOUT: +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc8_3.1(%self.param: ref %i64.builtin) = "no_op"; +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc8_3.2(%self.param: ref %i64) { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc8_3.3(%self.param: ref %Cpp.long) { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- unsigned_long_long.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] +// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] +// CHECK:STDOUT: %u64: type = class_type @UInt, @UInt(%int_64) [concrete] +// CHECK:STDOUT: %pattern_type.b35: type = pattern_type %u64 [concrete] +// CHECK:STDOUT: %cpp_unsigned_long_long.patt: %pattern_type.b35 = value_binding_pattern cpp_unsigned_long_long [concrete] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.14f: type = facet_type <@ImplicitAs, @ImplicitAs(%u64)> [concrete] +// CHECK:STDOUT: %To.fe9: Core.IntLiteral = symbolic_binding To, 0 [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.199: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1, @Core.IntLiteral.as.ImplicitAs.impl.b68(%To.fe9) [symbolic] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.170: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.199 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.9c4: = impl_witness imports.%ImplicitAs.impl_witness_table.42f, @Core.IntLiteral.as.ImplicitAs.impl.b68(%int_64) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b18: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1, @Core.IntLiteral.as.ImplicitAs.impl.b68(%int_64) [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.633: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b18 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.d29: %ImplicitAs.type.14f = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.9c4) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.8cc: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%u64, %ImplicitAs.facet.d29) [concrete] +// CHECK:STDOUT: %.93e: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.8cc, %ImplicitAs.facet.d29 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.eb0: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.633 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.633, @Core.IntLiteral.as.ImplicitAs.impl.Convert.1(%int_64) [concrete] +// CHECK:STDOUT: %bound_method.7e7: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] +// CHECK:STDOUT: %int_1.01f: %u64 = int_value 1 [concrete] +// CHECK:STDOUT: %ULongLongResult: type = class_type @ULongLongResult [concrete] +// CHECK:STDOUT: %pattern_type.97e: type = pattern_type %ULongLongResult [concrete] +// CHECK:STDOUT: %cpp_unsigned_long_long_result.patt: %pattern_type.97e = value_binding_pattern cpp_unsigned_long_long_result [concrete] +// CHECK:STDOUT: %PassULongLong.cpp_overload_set.type: type = cpp_overload_set_type @PassULongLong.cpp_overload_set [concrete] +// CHECK:STDOUT: %PassULongLong.cpp_overload_set.value: %PassULongLong.cpp_overload_set.type = cpp_overload_set_value @PassULongLong.cpp_overload_set [concrete] +// CHECK:STDOUT: %ptr.130: type = ptr_type %ULongLongResult [concrete] +// CHECK:STDOUT: %PassULongLong__carbon_thunk.type.76ef5b.1: type = fn_type @PassULongLong__carbon_thunk.1 [concrete] +// CHECK:STDOUT: %PassULongLong__carbon_thunk.030145.1: %PassULongLong__carbon_thunk.type.76ef5b.1 = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.unsigned_long: type = class_type @ULong64 [concrete] +// CHECK:STDOUT: %pattern_type.172: type = pattern_type %Cpp.unsigned_long [concrete] +// CHECK:STDOUT: %cpp_unsigned_long.patt: %pattern_type.172 = value_binding_pattern cpp_unsigned_long [concrete] +// CHECK:STDOUT: %ImplicitAs.type.7da: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.unsigned_long)> [concrete] +// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.747: = impl_witness imports.%ImplicitAs.impl_witness_table.54e [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.dbc: %ImplicitAs.type.7da = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.747) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.57a: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Cpp.unsigned_long, %ImplicitAs.facet.dbc) [concrete] +// CHECK:STDOUT: %.869: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.57a, %ImplicitAs.facet.dbc [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2 [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6 = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce [concrete] +// CHECK:STDOUT: %int_1.9e8: %Cpp.unsigned_long = int_value 1 [concrete] +// CHECK:STDOUT: %ULongResult: type = class_type @ULongResult [concrete] +// CHECK:STDOUT: %pattern_type.97f: type = pattern_type %ULongResult [concrete] +// CHECK:STDOUT: %cpp_unsigned_long_result.patt: %pattern_type.97f = value_binding_pattern cpp_unsigned_long_result [concrete] +// CHECK:STDOUT: %ptr.e40: type = ptr_type %ULongResult [concrete] +// CHECK:STDOUT: %PassULongLong__carbon_thunk.type.76ef5b.2: type = fn_type @PassULongLong__carbon_thunk.2 [concrete] +// CHECK:STDOUT: %PassULongLong__carbon_thunk.030145.2: %PassULongLong__carbon_thunk.type.76ef5b.2 = struct_value () [concrete] +// CHECK:STDOUT: %carbon_u64.patt: %pattern_type.b35 = value_binding_pattern carbon_u64 [concrete] +// CHECK:STDOUT: %carbon_u64_result.patt: %pattern_type.97e = value_binding_pattern carbon_u64_result [concrete] +// CHECK:STDOUT: %f32.c73: type = class_type @Float, @Float(%int_32) [concrete] +// CHECK:STDOUT: %As.type.68f: type = facet_type <@As, @As(%Cpp.unsigned_long)> [concrete] +// CHECK:STDOUT: %As.impl_witness.a83: = impl_witness imports.%As.impl_witness_table.fcb [concrete] +// CHECK:STDOUT: %As.facet: %As.type.68f = facet_value Core.IntLiteral, (%As.impl_witness.a83) [concrete] +// CHECK:STDOUT: %As.WithSelf.Convert.type.d43: type = fn_type @As.WithSelf.Convert, @As.WithSelf(%Cpp.unsigned_long, %As.facet) [concrete] +// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %As.WithSelf.Convert.type.d43, %As.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type: type = fn_type @Core.IntLiteral.as.As.impl.Convert [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert: %Core.IntLiteral.as.As.impl.Convert.type = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.f9e: = impl_witness imports.%ImplicitAs.impl_witness_table.d48 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.020: %ImplicitAs.type.7cb = facet_value %Cpp.unsigned_long, (%ImplicitAs.impl_witness.f9e) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.a35: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(Core.IntLiteral, %ImplicitAs.facet.020) [concrete] +// CHECK:STDOUT: %.1d2: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.a35, %ImplicitAs.facet.020 [concrete] +// CHECK:STDOUT: %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.type: type = fn_type @Cpp.unsigned_long.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %Cpp.unsigned_long.as.ImplicitAs.impl.Convert: %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] +// CHECK:STDOUT: %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.9e8, %Cpp.unsigned_long.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %array_type: type = array_type %int_1.5b8, %f32.c73 [concrete] +// CHECK:STDOUT: %f32.9b3: type = float_type %int_32, f32 [concrete] +// CHECK:STDOUT: %pattern_type.18b: type = pattern_type %array_type [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.18b = ref_binding_pattern a [concrete] +// CHECK:STDOUT: %a.var_patt: %pattern_type.18b = var_pattern %a.patt [concrete] +// CHECK:STDOUT: %float.6da: Core.FloatLiteral = float_literal_value 10e-1 [concrete] +// CHECK:STDOUT: %tuple.type: type = tuple_type (Core.FloatLiteral) [concrete] +// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%float.6da) [concrete] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.ed3: type = facet_type <@ImplicitAs, @ImplicitAs(%f32.c73)> [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.063: type = fn_type @Core.FloatLiteral.as.ImplicitAs.impl.Convert, @Core.FloatLiteral.as.ImplicitAs.impl(%N) [symbolic] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.d4f: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.063 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.303: = impl_witness imports.%ImplicitAs.impl_witness_table.393, @Core.FloatLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.a62: type = fn_type @Core.FloatLiteral.as.ImplicitAs.impl.Convert, @Core.FloatLiteral.as.ImplicitAs.impl(%int_32) [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.b37: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.a62 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.65e: %ImplicitAs.type.ed3 = facet_value Core.FloatLiteral, (%ImplicitAs.impl_witness.303) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.2e4: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%f32.c73, %ImplicitAs.facet.65e) [concrete] +// CHECK:STDOUT: %.17b: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.2e4, %ImplicitAs.facet.65e [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %float.6da, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.b37 [concrete] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.FloatLiteral.as.ImplicitAs.impl.Convert.b37, @Core.FloatLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] +// CHECK:STDOUT: %bound_method.3e4: = bound_method %float.6da, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] +// CHECK:STDOUT: %float.943: %f32.c73 = float_value 1 [concrete] +// CHECK:STDOUT: %array: %array_type = tuple_value (%float.943) [concrete] +// CHECK:STDOUT: %Destroy.Op.type.1d8f74.3: type = fn_type @Destroy.Op.loc24_3.3 [concrete] +// CHECK:STDOUT: %Destroy.Op.1a2547.3: %Destroy.Op.type.1d8f74.3 = struct_value () [concrete] +// CHECK:STDOUT: %ULongLongResult.cpp_destructor.type: type = fn_type @ULongLongResult.cpp_destructor [concrete] +// CHECK:STDOUT: %ULongLongResult.cpp_destructor: %ULongLongResult.cpp_destructor.type = struct_value () [concrete] +// CHECK:STDOUT: %ULongResult.cpp_destructor.type: type = fn_type @ULongResult.cpp_destructor [concrete] +// CHECK:STDOUT: %ULongResult.cpp_destructor: %ULongResult.cpp_destructor.type = struct_value () [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { +// CHECK:STDOUT: .unsigned_long_long = @F.%u64.2 +// CHECK:STDOUT: .ULongLongResult = %ULongLongResult.decl +// CHECK:STDOUT: .PassULongLong = %PassULongLong.cpp_overload_set.value +// CHECK:STDOUT: .unsigned_long = constants.%Cpp.unsigned_long +// CHECK:STDOUT: .ULongResult = %ULongResult.decl +// CHECK:STDOUT: import Cpp//... +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import_ref.aa5: @Core.IntLiteral.as.ImplicitAs.impl.b68.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.199) = import_ref Core//prelude/types/uint, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.b68.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.170)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.42f = impl_witness_table (%Core.import_ref.aa5), @Core.IntLiteral.as.ImplicitAs.impl.b68 [concrete] +// CHECK:STDOUT: %ULongLongResult.decl: type = class_decl @ULongLongResult [concrete = constants.%ULongLongResult] {} {} +// CHECK:STDOUT: %PassULongLong.cpp_overload_set.value: %PassULongLong.cpp_overload_set.type = cpp_overload_set_value @PassULongLong.cpp_overload_set [concrete = constants.%PassULongLong.cpp_overload_set.value] +// CHECK:STDOUT: %PassULongLong__carbon_thunk.decl.3ca866.1: %PassULongLong__carbon_thunk.type.76ef5b.1 = fn_decl @PassULongLong__carbon_thunk.1 [concrete = constants.%PassULongLong__carbon_thunk.030145.1] { +// CHECK:STDOUT: +// CHECK:STDOUT: } { +// CHECK:STDOUT: +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import_ref.06c923.1: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ae6 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.54e = impl_witness_table (%Core.import_ref.06c923.1), @Core.IntLiteral.as.ImplicitAs.impl.a49 [concrete] +// CHECK:STDOUT: %ULongResult.decl: type = class_decl @ULongResult [concrete = constants.%ULongResult] {} {} +// CHECK:STDOUT: %PassULongLong__carbon_thunk.decl.3ca866.2: %PassULongLong__carbon_thunk.type.76ef5b.2 = fn_decl @PassULongLong__carbon_thunk.2 [concrete = constants.%PassULongLong__carbon_thunk.030145.2] { +// CHECK:STDOUT: +// CHECK:STDOUT: } { +// CHECK:STDOUT: +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import_ref.06c923.2: %Core.IntLiteral.as.As.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.As.impl.Convert] +// CHECK:STDOUT: %As.impl_witness_table.fcb = impl_witness_table (%Core.import_ref.06c923.2), @Core.IntLiteral.as.As.impl.60e [concrete] +// CHECK:STDOUT: %Core.import_ref.06c923.3: %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.unsigned_long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.d48 = impl_witness_table (%Core.import_ref.06c923.3), @Cpp.unsigned_long.as.ImplicitAs.impl.8de [concrete] +// CHECK:STDOUT: %Core.import_ref.c4c: @Core.FloatLiteral.as.ImplicitAs.impl.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.type (%Core.FloatLiteral.as.ImplicitAs.impl.Convert.type.063) = import_ref Core//prelude/types/float, loc{{\d+_\d+}}, loaded [symbolic = @Core.FloatLiteral.as.ImplicitAs.impl.%Core.FloatLiteral.as.ImplicitAs.impl.Convert (constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.d4f)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.393 = impl_witness_table (%Core.import_ref.c4c), @Core.FloatLiteral.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @F() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: %int_1.loc15: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc15: %.93e = impl_witness_access constants.%ImplicitAs.impl_witness.9c4, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.633] +// CHECK:STDOUT: %bound_method.loc15_56.1: = bound_method %int_1.loc15, %impl.elem0.loc15 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.eb0] +// CHECK:STDOUT: %specific_fn.loc15: = specific_function %impl.elem0.loc15, @Core.IntLiteral.as.ImplicitAs.impl.Convert.1(constants.%int_64) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc15_56.2: = bound_method %int_1.loc15, %specific_fn.loc15 [concrete = constants.%bound_method.7e7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15: init %u64 = call %bound_method.loc15_56.2(%int_1.loc15) [concrete = constants.%int_1.01f] +// CHECK:STDOUT: %.loc15_56.1: %u64 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc15 [concrete = constants.%int_1.01f] +// CHECK:STDOUT: %.loc15_56.2: %u64 = converted %int_1.loc15, %.loc15_56.1 [concrete = constants.%int_1.01f] +// CHECK:STDOUT: %.loc15_34: type = splice_block %unsigned_long_long.ref [concrete = constants.%u64] { +// CHECK:STDOUT: %Cpp.ref.loc15: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: +// CHECK:STDOUT: %unsigned_long_long.ref: type = name_ref unsigned_long_long, %u64.2 [concrete = constants.%u64] +// CHECK:STDOUT: } +// CHECK:STDOUT: %cpp_unsigned_long_long: %u64 = wrapper_binding cpp_unsigned_long_long, %.loc15_56.2 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %cpp_unsigned_long_long.patt: %pattern_type.b35 = value_binding_pattern cpp_unsigned_long_long [concrete = constants.%cpp_unsigned_long_long.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %Cpp.ref.loc16_67: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %PassULongLong.ref.loc16: %PassULongLong.cpp_overload_set.type = name_ref PassULongLong, imports.%PassULongLong.cpp_overload_set.value [concrete = constants.%PassULongLong.cpp_overload_set.value] +// CHECK:STDOUT: %cpp_unsigned_long_long.ref: %u64 = name_ref cpp_unsigned_long_long, %cpp_unsigned_long_long +// CHECK:STDOUT: %.loc16_107.1: ref %ULongLongResult = temporary_storage +// CHECK:STDOUT: %addr.loc16: %ptr.130 = addr_of %.loc16_107.1 +// CHECK:STDOUT: %PassULongLong__carbon_thunk.call.loc16: init %empty_tuple.type = call imports.%PassULongLong__carbon_thunk.decl.3ca866.1(%cpp_unsigned_long_long.ref, %addr.loc16) +// CHECK:STDOUT: %.loc16_107.2: init %ULongLongResult to %.loc16_107.1 = mark_in_place_init %PassULongLong__carbon_thunk.call.loc16 +// CHECK:STDOUT: %.loc16_107.3: ref %ULongLongResult = temporary %.loc16_107.1, %.loc16_107.2 +// CHECK:STDOUT: %.loc16_107.4: %ULongLongResult = acquire_value %.loc16_107.3 +// CHECK:STDOUT: %.loc16_48: type = splice_block %ULongLongResult.ref.loc16 [concrete = constants.%ULongLongResult] { +// CHECK:STDOUT: %Cpp.ref.loc16_45: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %ULongLongResult.ref.loc16: type = name_ref ULongLongResult, imports.%ULongLongResult.decl [concrete = constants.%ULongLongResult] +// CHECK:STDOUT: } +// CHECK:STDOUT: %cpp_unsigned_long_long_result: %ULongLongResult = wrapper_binding cpp_unsigned_long_long_result, %.loc16_107.4 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %cpp_unsigned_long_long_result.patt: %pattern_type.97e = value_binding_pattern cpp_unsigned_long_long_result [concrete = constants.%cpp_unsigned_long_long_result.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %int_1.loc18: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc18: %.869 = impl_witness_access constants.%ImplicitAs.impl_witness.747, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] +// CHECK:STDOUT: %bound_method.loc18: = bound_method %int_1.loc18, %impl.elem0.loc18 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18: init %Cpp.unsigned_long = call %bound_method.loc18(%int_1.loc18) [concrete = constants.%int_1.9e8] +// CHECK:STDOUT: %.loc18_46.1: %Cpp.unsigned_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18 [concrete = constants.%int_1.9e8] +// CHECK:STDOUT: %.loc18_46.2: %Cpp.unsigned_long = converted %int_1.loc18, %.loc18_46.1 [concrete = constants.%int_1.9e8] +// CHECK:STDOUT: %.loc18_29: type = splice_block %unsigned_long.ref.loc18 [concrete = constants.%Cpp.unsigned_long] { +// CHECK:STDOUT: %Cpp.ref.loc18: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %unsigned_long.ref.loc18: type = name_ref unsigned_long, constants.%Cpp.unsigned_long [concrete = constants.%Cpp.unsigned_long] +// CHECK:STDOUT: } +// CHECK:STDOUT: %cpp_unsigned_long: %Cpp.unsigned_long = wrapper_binding cpp_unsigned_long, %.loc18_46.2 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %cpp_unsigned_long.patt: %pattern_type.172 = value_binding_pattern cpp_unsigned_long [concrete = constants.%cpp_unsigned_long.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %Cpp.ref.loc19_58: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %PassULongLong.ref.loc19: %PassULongLong.cpp_overload_set.type = name_ref PassULongLong, imports.%PassULongLong.cpp_overload_set.value [concrete = constants.%PassULongLong.cpp_overload_set.value] +// CHECK:STDOUT: %cpp_unsigned_long.ref: %Cpp.unsigned_long = name_ref cpp_unsigned_long, %cpp_unsigned_long +// CHECK:STDOUT: %.loc19_93.1: ref %ULongResult = temporary_storage +// CHECK:STDOUT: %addr.loc19: %ptr.e40 = addr_of %.loc19_93.1 +// CHECK:STDOUT: %PassULongLong__carbon_thunk.call.loc19: init %empty_tuple.type = call imports.%PassULongLong__carbon_thunk.decl.3ca866.2(%cpp_unsigned_long.ref, %addr.loc19) +// CHECK:STDOUT: %.loc19_93.2: init %ULongResult to %.loc19_93.1 = mark_in_place_init %PassULongLong__carbon_thunk.call.loc19 +// CHECK:STDOUT: %.loc19_93.3: ref %ULongResult = temporary %.loc19_93.1, %.loc19_93.2 +// CHECK:STDOUT: %.loc19_93.4: %ULongResult = acquire_value %.loc19_93.3 +// CHECK:STDOUT: %.loc19_43: type = splice_block %ULongResult.ref [concrete = constants.%ULongResult] { +// CHECK:STDOUT: %Cpp.ref.loc19_40: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %ULongResult.ref: type = name_ref ULongResult, imports.%ULongResult.decl [concrete = constants.%ULongResult] +// CHECK:STDOUT: } +// CHECK:STDOUT: %cpp_unsigned_long_result: %ULongResult = wrapper_binding cpp_unsigned_long_result, %.loc19_93.4 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %cpp_unsigned_long_result.patt: %pattern_type.97f = value_binding_pattern cpp_unsigned_long_result [concrete = constants.%cpp_unsigned_long_result.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %int_1.loc21: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc21: %.93e = impl_witness_access constants.%ImplicitAs.impl_witness.9c4, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.633] +// CHECK:STDOUT: %bound_method.loc21_25.1: = bound_method %int_1.loc21, %impl.elem0.loc21 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.eb0] +// CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem0.loc21, @Core.IntLiteral.as.ImplicitAs.impl.Convert.1(constants.%int_64) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc21_25.2: = bound_method %int_1.loc21, %specific_fn.loc21 [concrete = constants.%bound_method.7e7] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21: init %u64 = call %bound_method.loc21_25.2(%int_1.loc21) [concrete = constants.%int_1.01f] +// CHECK:STDOUT: %.loc21_25.1: %u64 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21 [concrete = constants.%int_1.01f] +// CHECK:STDOUT: %.loc21_25.2: %u64 = converted %int_1.loc21, %.loc21_25.1 [concrete = constants.%int_1.01f] +// CHECK:STDOUT: %u64.loc21: type = type_literal constants.%u64 [concrete = constants.%u64] +// CHECK:STDOUT: %carbon_u64: %u64 = wrapper_binding carbon_u64, %.loc21_25.2 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %carbon_u64.patt: %pattern_type.b35 = value_binding_pattern carbon_u64 [concrete = constants.%carbon_u64.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %Cpp.ref.loc22_55: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %PassULongLong.ref.loc22: %PassULongLong.cpp_overload_set.type = name_ref PassULongLong, imports.%PassULongLong.cpp_overload_set.value [concrete = constants.%PassULongLong.cpp_overload_set.value] +// CHECK:STDOUT: %carbon_u64.ref: %u64 = name_ref carbon_u64, %carbon_u64 +// CHECK:STDOUT: %.loc22_83.1: ref %ULongLongResult = temporary_storage +// CHECK:STDOUT: %addr.loc22: %ptr.130 = addr_of %.loc22_83.1 +// CHECK:STDOUT: %PassULongLong__carbon_thunk.call.loc22: init %empty_tuple.type = call imports.%PassULongLong__carbon_thunk.decl.3ca866.1(%carbon_u64.ref, %addr.loc22) +// CHECK:STDOUT: %.loc22_83.2: init %ULongLongResult to %.loc22_83.1 = mark_in_place_init %PassULongLong__carbon_thunk.call.loc22 +// CHECK:STDOUT: %.loc22_83.3: ref %ULongLongResult = temporary %.loc22_83.1, %.loc22_83.2 +// CHECK:STDOUT: %.loc22_83.4: %ULongLongResult = acquire_value %.loc22_83.3 +// CHECK:STDOUT: %.loc22_36: type = splice_block %ULongLongResult.ref.loc22 [concrete = constants.%ULongLongResult] { +// CHECK:STDOUT: %Cpp.ref.loc22_33: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %ULongLongResult.ref.loc22: type = name_ref ULongLongResult, imports.%ULongLongResult.decl [concrete = constants.%ULongLongResult] +// CHECK:STDOUT: } +// CHECK:STDOUT: %carbon_u64_result: %ULongLongResult = wrapper_binding carbon_u64_result, %.loc22_83.4 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %carbon_u64_result.patt: %pattern_type.97e = value_binding_pattern carbon_u64_result [concrete = constants.%carbon_u64_result.patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a.var: ref %array_type = var_storage %a.var_patt +// CHECK:STDOUT: %float: Core.FloatLiteral = float_literal_value 10e-1 [concrete = constants.%float.6da] +// CHECK:STDOUT: %.loc24_59.1: %tuple.type = tuple_literal (%float) [concrete = constants.%tuple] +// CHECK:STDOUT: %impl.elem0.loc24_59: %.17b = impl_witness_access constants.%ImplicitAs.impl_witness.303, element0 [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.b37] +// CHECK:STDOUT: %bound_method.loc24_59.1: = bound_method %float, %impl.elem0.loc24_59 [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %specific_fn.loc24: = specific_function %impl.elem0.loc24_59, @Core.FloatLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc24_59.2: = bound_method %float, %specific_fn.loc24 [concrete = constants.%bound_method.3e4] +// CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.call: init %f32.c73 = call %bound_method.loc24_59.2(%float) [concrete = constants.%float.943] +// CHECK:STDOUT: %.loc24_59.2: init %f32.c73 = converted %float, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%float.943] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] +// CHECK:STDOUT: %.loc24_59.3: ref %f32.c73 = array_index %a.var, %int_0 +// CHECK:STDOUT: %.loc24_59.4: init %f32.c73 to %.loc24_59.3 = in_place_init %.loc24_59.2 [concrete = constants.%float.943] +// CHECK:STDOUT: %.loc24_59.5: init %array_type to %a.var = array_init (%.loc24_59.4) [concrete = constants.%array] +// CHECK:STDOUT: %.loc24_3: init %array_type = converted %.loc24_59.1, %.loc24_59.5 [concrete = constants.%array] +// CHECK:STDOUT: assign %a.var, %.loc24_3 +// CHECK:STDOUT: %.loc24_50: type = splice_block %array_type [concrete = constants.%array_type] { +// CHECK:STDOUT: %f32: type = type_literal constants.%f32.c73 [concrete = constants.%f32.c73] +// CHECK:STDOUT: %int_1.loc24: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %Cpp.ref.loc24: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %unsigned_long.ref.loc24: type = name_ref unsigned_long, constants.%Cpp.unsigned_long [concrete = constants.%Cpp.unsigned_long] +// CHECK:STDOUT: %impl.elem0.loc24_30.1: %.0ea = impl_witness_access constants.%As.impl_witness.a83, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert] +// CHECK:STDOUT: %bound_method.loc24_30.1: = bound_method %int_1.loc24, %impl.elem0.loc24_30.1 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %Cpp.unsigned_long = call %bound_method.loc24_30.1(%int_1.loc24) [concrete = constants.%int_1.9e8] +// CHECK:STDOUT: %.loc24_30.1: %Cpp.unsigned_long = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.9e8] +// CHECK:STDOUT: %.loc24_30.2: %Cpp.unsigned_long = converted %int_1.loc24, %.loc24_30.1 [concrete = constants.%int_1.9e8] +// CHECK:STDOUT: %impl.elem0.loc24_30.2: %.1d2 = impl_witness_access constants.%ImplicitAs.impl_witness.f9e, element0 [concrete = constants.%Cpp.unsigned_long.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc24_30.2: = bound_method %.loc24_30.2, %impl.elem0.loc24_30.2 [concrete = constants.%Cpp.unsigned_long.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.call: init Core.IntLiteral = call %bound_method.loc24_30.2(%.loc24_30.2) [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc24_30.3: Core.IntLiteral = value_of_initializer %Cpp.unsigned_long.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc24_30.4: Core.IntLiteral = converted %.loc24_30.2, %.loc24_30.3 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %array_type: type = array_type %.loc24_30.4, %f32 [concrete = constants.%array_type] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a: ref %array_type = wrapper_binding a, %a.var +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %a.patt: %pattern_type.18b = ref_binding_pattern a [concrete = constants.%a.patt] +// CHECK:STDOUT: %a.var_patt: %pattern_type.18b = var_pattern %a.patt [concrete = constants.%a.var_patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %Destroy.Op.bound: = bound_method %a.var, constants.%Destroy.Op.1a2547.3 +// CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%a.var) +// CHECK:STDOUT: %ULongLongResult.cpp_destructor.bound.loc22: = bound_method %.loc22_83.3, constants.%ULongLongResult.cpp_destructor +// CHECK:STDOUT: %ULongLongResult.cpp_destructor.call.loc22: init %empty_tuple.type = call %ULongLongResult.cpp_destructor.bound.loc22(%.loc22_83.3) +// CHECK:STDOUT: %ULongResult.cpp_destructor.bound: = bound_method %.loc19_93.3, constants.%ULongResult.cpp_destructor +// CHECK:STDOUT: %ULongResult.cpp_destructor.call: init %empty_tuple.type = call %ULongResult.cpp_destructor.bound(%.loc19_93.3) +// CHECK:STDOUT: %ULongLongResult.cpp_destructor.bound.loc16: = bound_method %.loc16_107.3, constants.%ULongLongResult.cpp_destructor +// CHECK:STDOUT: %ULongLongResult.cpp_destructor.call.loc16: init %empty_tuple.type = call %ULongLongResult.cpp_destructor.bound.loc16(%.loc16_107.3) +// CHECK:STDOUT: +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc24_3.1(%self.param: ref %f32.9b3) = "no_op"; +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc24_3.2(%self.param: ref %f32.c73) { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc24_3.3(%self.param: ref %array_type) { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- copy_unsigned_long.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %Cpp.unsigned_long: type = class_type @ULong64 [concrete] +// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] +// CHECK:STDOUT: %u64: type = class_type @UInt, @UInt(%int_64) [concrete] +// CHECK:STDOUT: %u64.builtin: type = int_type unsigned, %int_64 [concrete] +// CHECK:STDOUT: %pattern_type.172: type = pattern_type %Cpp.unsigned_long [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.172 = ref_binding_pattern a [concrete] +// CHECK:STDOUT: %a.var_patt: %pattern_type.172 = var_pattern %a.patt [concrete] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.7da: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.unsigned_long)> [concrete] +// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.747: = impl_witness imports.%ImplicitAs.impl_witness_table.54e [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.7da = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.747) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.57a: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Cpp.unsigned_long, %ImplicitAs.facet) [concrete] +// CHECK:STDOUT: %.869: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.57a, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete] +// CHECK:STDOUT: %int_1.9e8: %Cpp.unsigned_long = int_value 1 [concrete] +// CHECK:STDOUT: %b.patt: %pattern_type.172 = ref_binding_pattern b [concrete] +// CHECK:STDOUT: %b.var_patt: %pattern_type.172 = var_pattern %b.patt [concrete] +// CHECK:STDOUT: %Copy.impl_witness.650: = impl_witness imports.%Copy.impl_witness_table.ab1 [concrete] +// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %Cpp.unsigned_long, (%Copy.impl_witness.650) [concrete] +// CHECK:STDOUT: %Copy.WithSelf.Op.type.6a8: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet) [concrete] +// CHECK:STDOUT: %.647: type = fn_type_with_self_type %Copy.WithSelf.Op.type.6a8, %Copy.facet [concrete] +// CHECK:STDOUT: %Cpp.unsigned_long.as.Copy.impl.Op.type: type = fn_type @Cpp.unsigned_long.as.Copy.impl.Op [concrete] +// CHECK:STDOUT: %Cpp.unsigned_long.as.Copy.impl.Op: %Cpp.unsigned_long.as.Copy.impl.Op.type = struct_value () [concrete] +// CHECK:STDOUT: %Destroy.Op.type.1d8f74.3: type = fn_type @Destroy.Op.loc9_3.3 [concrete] +// CHECK:STDOUT: %Destroy.Op.1a2547.3: %Destroy.Op.type.1d8f74.3 = struct_value () [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Cpp: = namespace file.%Cpp.import_cpp, [concrete] { +// CHECK:STDOUT: .unsigned_long = constants.%Cpp.unsigned_long +// CHECK:STDOUT: import Cpp//... +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import_ref.06c: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.54e = impl_witness_table (%Core.import_ref.06c), @Core.IntLiteral.as.ImplicitAs.impl.a49 [concrete] +// CHECK:STDOUT: %Core.import_ref.9c3: %Cpp.unsigned_long.as.Copy.impl.Op.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.unsigned_long.as.Copy.impl.Op] +// CHECK:STDOUT: %Copy.impl_witness_table.ab1 = impl_witness_table (%Core.import_ref.9c3), @Cpp.unsigned_long.as.Copy.impl [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @CopyUnsignedLong() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: %a.var: ref %Cpp.unsigned_long = var_storage %a.var_patt +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc8: %.869 = impl_witness_access constants.%ImplicitAs.impl_witness.747, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] +// CHECK:STDOUT: %bound_method.loc8: = bound_method %int_1, %impl.elem0.loc8 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] +// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %Cpp.unsigned_long = call %bound_method.loc8(%int_1) [concrete = constants.%int_1.9e8] +// CHECK:STDOUT: %.loc8_3: init %Cpp.unsigned_long = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.9e8] +// CHECK:STDOUT: assign %a.var, %.loc8_3 +// CHECK:STDOUT: %.loc8_13: type = splice_block %unsigned_long.ref.loc8 [concrete = constants.%Cpp.unsigned_long] { +// CHECK:STDOUT: %Cpp.ref.loc8: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %unsigned_long.ref.loc8: type = name_ref unsigned_long, constants.%Cpp.unsigned_long [concrete = constants.%Cpp.unsigned_long] +// CHECK:STDOUT: } +// CHECK:STDOUT: %a: ref %Cpp.unsigned_long = wrapper_binding a, %a.var +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %a.patt: %pattern_type.172 = ref_binding_pattern a [concrete = constants.%a.patt] +// CHECK:STDOUT: %a.var_patt: %pattern_type.172 = var_pattern %a.patt [concrete = constants.%a.var_patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %b.var: ref %Cpp.unsigned_long = var_storage %b.var_patt +// CHECK:STDOUT: %a.ref: ref %Cpp.unsigned_long = name_ref a, %a +// CHECK:STDOUT: %.loc9_37: %Cpp.unsigned_long = acquire_value %a.ref +// CHECK:STDOUT: %impl.elem0.loc9: %.647 = impl_witness_access constants.%Copy.impl_witness.650, element0 [concrete = constants.%Cpp.unsigned_long.as.Copy.impl.Op] +// CHECK:STDOUT: %bound_method.loc9: = bound_method %.loc9_37, %impl.elem0.loc9 +// CHECK:STDOUT: %Cpp.unsigned_long.as.Copy.impl.Op.call: init %Cpp.unsigned_long = call %bound_method.loc9(%.loc9_37) +// CHECK:STDOUT: assign %b.var, %Cpp.unsigned_long.as.Copy.impl.Op.call +// CHECK:STDOUT: %.loc9_20: type = splice_block %unsigned_long.ref.loc9 [concrete = constants.%Cpp.unsigned_long] { +// CHECK:STDOUT: %Cpp.ref.loc9: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] +// CHECK:STDOUT: %unsigned_long.ref.loc9: type = name_ref unsigned_long, constants.%Cpp.unsigned_long [concrete = constants.%Cpp.unsigned_long] +// CHECK:STDOUT: } +// CHECK:STDOUT: %b: ref %Cpp.unsigned_long = wrapper_binding b, %b.var +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %b.patt: %pattern_type.172 = ref_binding_pattern b [concrete = constants.%b.patt] +// CHECK:STDOUT: %b.var_patt: %pattern_type.172 = var_pattern %b.patt [concrete = constants.%b.var_patt] +// CHECK:STDOUT: } +// CHECK:STDOUT: %Destroy.Op.bound.loc9: = bound_method %b.var, constants.%Destroy.Op.1a2547.3 +// CHECK:STDOUT: %Destroy.Op.call.loc9: init %empty_tuple.type = call %Destroy.Op.bound.loc9(%b.var) +// CHECK:STDOUT: %Destroy.Op.bound.loc8: = bound_method %a.var, constants.%Destroy.Op.1a2547.3 +// CHECK:STDOUT: %Destroy.Op.call.loc8: init %empty_tuple.type = call %Destroy.Op.bound.loc8(%a.var) +// CHECK:STDOUT: +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc9_3.1(%self.param: ref %u64.builtin) = "no_op"; +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc9_3.2(%self.param: ref %u64) { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Destroy.Op.loc9_3.3(%self.param: ref %Cpp.unsigned_long) { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.llp64.carbon b/toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.llp64.carbon index 7e452fc6f842..3ddb7d91add5 100644 --- a/toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.llp64.carbon +++ b/toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.llp64.carbon @@ -1101,7 +1101,7 @@ fn CopyUnsignedLong() { // CHECK:STDOUT: %As.impl_witness.d97: = impl_witness imports.%As.impl_witness_table.a2e [concrete] // CHECK:STDOUT: %As.facet: %As.type.cbc = facet_value Core.IntLiteral, (%As.impl_witness.d97) [concrete] // CHECK:STDOUT: %As.WithSelf.Convert.type.d45: type = fn_type @As.WithSelf.Convert, @As.WithSelf(%Cpp.long, %As.facet) [concrete] -// CHECK:STDOUT: %.d2f: type = fn_type_with_self_type %As.WithSelf.Convert.type.d45, %As.facet [concrete] +// CHECK:STDOUT: %.d2f4: type = fn_type_with_self_type %As.WithSelf.Convert.type.d45, %As.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type: type = fn_type @Core.IntLiteral.as.As.impl.Convert [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert: %Core.IntLiteral.as.As.impl.Convert.type = struct_value () [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.As.impl.Convert [concrete] @@ -1316,7 +1316,7 @@ fn CopyUnsignedLong() { // CHECK:STDOUT: %int_1.loc26: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %Cpp.ref.loc26: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %long.ref.loc26: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long] -// CHECK:STDOUT: %impl.elem0.loc26_30.1: %.d2f = impl_witness_access constants.%As.impl_witness.d97, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert] +// CHECK:STDOUT: %impl.elem0.loc26_30.1: %.d2f4 = impl_witness_access constants.%As.impl_witness.d97, element0 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert] // CHECK:STDOUT: %bound_method.loc26_30.1: = bound_method %int_1.loc26, %impl.elem0.loc26_30.1 [concrete = constants.%Core.IntLiteral.as.As.impl.Convert.bound] // CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.call: init %Cpp.long = call %bound_method.loc26_30.1(%int_1.loc26) [concrete = constants.%int_1.9ce] // CHECK:STDOUT: %.loc26_30.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.As.impl.Convert.call [concrete = constants.%int_1.9ce] @@ -1514,10 +1514,10 @@ fn CopyUnsignedLong() { // CHECK:STDOUT: %Core.import_ref.adc9b: %Cpp.long.as.EqWith.impl.NotEqual.type.8e5 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.EqWith.impl.NotEqual.a6a] // CHECK:STDOUT: %EqWith.impl_witness_table.48e = impl_witness_table (%Core.import_ref.a87, %Core.import_ref.adc9b), @Cpp.long.as.EqWith.impl.96d [concrete] // CHECK:STDOUT: %Core.import_ref.0e8: %Cpp.long.as.OrderedWith.impl.Less.type.335 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.OrderedWith.impl.Less.606] -// CHECK:STDOUT: %Core.import_ref.757: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.42c = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.0c8] +// CHECK:STDOUT: %Core.import_ref.757ec: %Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.42c = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.0c8] // CHECK:STDOUT: %Core.import_ref.c32c: %Cpp.long.as.OrderedWith.impl.Greater.type.725 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.OrderedWith.impl.Greater.7c8] // CHECK:STDOUT: %Core.import_ref.381: %Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.2d9 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.a09] -// CHECK:STDOUT: %OrderedWith.impl_witness_table.5d0 = impl_witness_table (%Core.import_ref.0e8, %Core.import_ref.757, %Core.import_ref.c32c, %Core.import_ref.381), @Cpp.long.as.OrderedWith.impl.894 [concrete] +// CHECK:STDOUT: %OrderedWith.impl_witness_table.5d0 = impl_witness_table (%Core.import_ref.0e8, %Core.import_ref.757ec, %Core.import_ref.c32c, %Core.import_ref.381), @Cpp.long.as.OrderedWith.impl.894 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ComparisonsHomogeneousLong() { @@ -1755,12 +1755,12 @@ fn CopyUnsignedLong() { // CHECK:STDOUT: %Core.Equal.025: @Cpp.long.as.EqWith.impl.5b1.%Cpp.long.as.EqWith.impl.Equal.type.1 (%Cpp.long.as.EqWith.impl.Equal.type.814973.2) = import_ref Core//prelude/types/cpp/int, Equal, loaded [symbolic = @Cpp.long.as.EqWith.impl.5b1.%Cpp.long.as.EqWith.impl.Equal.1 (constants.%Cpp.long.as.EqWith.impl.Equal.4a8971.2)] // CHECK:STDOUT: %Core.NotEqual.db5: @Cpp.long.as.EqWith.impl.5b1.%Cpp.long.as.EqWith.impl.NotEqual.type.1 (%Cpp.long.as.EqWith.impl.NotEqual.type.21e369.2) = import_ref Core//prelude/types/cpp/int, NotEqual, loaded [symbolic = @Cpp.long.as.EqWith.impl.5b1.%Cpp.long.as.EqWith.impl.NotEqual.1 (constants.%Cpp.long.as.EqWith.impl.NotEqual.385432.2)] // CHECK:STDOUT: %Core.import_ref.06c923.2: %i32.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%i32.as.ImplicitAs.impl.Convert] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a75 = impl_witness_table (%Core.import_ref.06c923.2), @i32.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a75 = impl_witness_table (%Core.import_ref.06c923.2), @i32.as.ImplicitAs.impl.133 [concrete] // CHECK:STDOUT: %Core.import_ref.d32f: @Cpp.long.as.OrderedWith.impl.3fc.%Cpp.long.as.OrderedWith.impl.Less.type.2 (%Cpp.long.as.OrderedWith.impl.Less.type.3ff9ca.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.OrderedWith.impl.3fc.%Cpp.long.as.OrderedWith.impl.Less.2 (constants.%Cpp.long.as.OrderedWith.impl.Less.76c9f3.1)] // CHECK:STDOUT: %Core.import_ref.4be: @Cpp.long.as.OrderedWith.impl.3fc.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.2 (%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.35cecb.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.OrderedWith.impl.3fc.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.2 (constants.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.351d50.1)] -// CHECK:STDOUT: %Core.import_ref.b5f: @Cpp.long.as.OrderedWith.impl.3fc.%Cpp.long.as.OrderedWith.impl.Greater.type.2 (%Cpp.long.as.OrderedWith.impl.Greater.type.e2eef7.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.OrderedWith.impl.3fc.%Cpp.long.as.OrderedWith.impl.Greater.2 (constants.%Cpp.long.as.OrderedWith.impl.Greater.37f70d.1)] +// CHECK:STDOUT: %Core.import_ref.b5f6: @Cpp.long.as.OrderedWith.impl.3fc.%Cpp.long.as.OrderedWith.impl.Greater.type.2 (%Cpp.long.as.OrderedWith.impl.Greater.type.e2eef7.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.OrderedWith.impl.3fc.%Cpp.long.as.OrderedWith.impl.Greater.2 (constants.%Cpp.long.as.OrderedWith.impl.Greater.37f70d.1)] // CHECK:STDOUT: %Core.import_ref.a8b: @Cpp.long.as.OrderedWith.impl.3fc.%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.2 (%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.type.154997.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.OrderedWith.impl.3fc.%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.2 (constants.%Cpp.long.as.OrderedWith.impl.GreaterOrEquivalent.e4afa3.1)] -// CHECK:STDOUT: %OrderedWith.impl_witness_table.41e = impl_witness_table (%Core.import_ref.d32f, %Core.import_ref.4be, %Core.import_ref.b5f, %Core.import_ref.a8b), @Cpp.long.as.OrderedWith.impl.3fc [concrete] +// CHECK:STDOUT: %OrderedWith.impl_witness_table.41e = impl_witness_table (%Core.import_ref.d32f, %Core.import_ref.4be, %Core.import_ref.b5f6, %Core.import_ref.a8b), @Cpp.long.as.OrderedWith.impl.3fc [concrete] // CHECK:STDOUT: %Core.Less.a91: @Cpp.long.as.OrderedWith.impl.3fc.%Cpp.long.as.OrderedWith.impl.Less.type.1 (%Cpp.long.as.OrderedWith.impl.Less.type.3ff9ca.2) = import_ref Core//prelude/types/cpp/int, Less, loaded [symbolic = @Cpp.long.as.OrderedWith.impl.3fc.%Cpp.long.as.OrderedWith.impl.Less.1 (constants.%Cpp.long.as.OrderedWith.impl.Less.76c9f3.2)] // CHECK:STDOUT: %Core.LessOrEquivalent.a62: @Cpp.long.as.OrderedWith.impl.3fc.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.1 (%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.type.35cecb.2) = import_ref Core//prelude/types/cpp/int, LessOrEquivalent, loaded [symbolic = @Cpp.long.as.OrderedWith.impl.3fc.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.1 (constants.%Cpp.long.as.OrderedWith.impl.LessOrEquivalent.351d50.2)] // CHECK:STDOUT: %Core.Greater.ac9: @Cpp.long.as.OrderedWith.impl.3fc.%Cpp.long.as.OrderedWith.impl.Greater.type.1 (%Cpp.long.as.OrderedWith.impl.Greater.type.e2eef7.2) = import_ref Core//prelude/types/cpp/int, Greater, loaded [symbolic = @Cpp.long.as.OrderedWith.impl.3fc.%Cpp.long.as.OrderedWith.impl.Greater.1 (constants.%Cpp.long.as.OrderedWith.impl.Greater.37f70d.2)] @@ -2233,7 +2233,7 @@ fn CopyUnsignedLong() { // CHECK:STDOUT: %Core.Equal.d4c: @T.as_type.as.EqWith.impl.673.%T.as_type.as.EqWith.impl.Equal.type.1 (%T.as_type.as.EqWith.impl.Equal.type.94a46e.2) = import_ref Core//prelude/types/cpp/int, Equal, loaded [symbolic = @T.as_type.as.EqWith.impl.673.%T.as_type.as.EqWith.impl.Equal.1 (constants.%T.as_type.as.EqWith.impl.Equal.3fb574.2)] // CHECK:STDOUT: %Core.NotEqual.d11: @T.as_type.as.EqWith.impl.673.%T.as_type.as.EqWith.impl.NotEqual.type.1 (%T.as_type.as.EqWith.impl.NotEqual.type.92df03.2) = import_ref Core//prelude/types/cpp/int, NotEqual, loaded [symbolic = @T.as_type.as.EqWith.impl.673.%T.as_type.as.EqWith.impl.NotEqual.1 (constants.%T.as_type.as.EqWith.impl.NotEqual.a7a615.2)] // CHECK:STDOUT: %Core.import_ref.06c923.2: %i32.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%i32.as.ImplicitAs.impl.Convert] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a75 = impl_witness_table (%Core.import_ref.06c923.2), @i32.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a75 = impl_witness_table (%Core.import_ref.06c923.2), @i32.as.ImplicitAs.impl.133 [concrete] // CHECK:STDOUT: %Core.import_ref.0c1: @T.as_type.as.OrderedWith.impl.821.%T.as_type.as.OrderedWith.impl.Less.type.2 (%T.as_type.as.OrderedWith.impl.Less.type.62945a.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.OrderedWith.impl.821.%T.as_type.as.OrderedWith.impl.Less.2 (constants.%T.as_type.as.OrderedWith.impl.Less.2ef721.1)] // CHECK:STDOUT: %Core.import_ref.f03: @T.as_type.as.OrderedWith.impl.821.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.2 (%T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.accc59.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.OrderedWith.impl.821.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.2 (constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.e8206a.1)] // CHECK:STDOUT: %Core.import_ref.dc8: @T.as_type.as.OrderedWith.impl.821.%T.as_type.as.OrderedWith.impl.Greater.type.2 (%T.as_type.as.OrderedWith.impl.Greater.type.4af657.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.OrderedWith.impl.821.%T.as_type.as.OrderedWith.impl.Greater.2 (constants.%T.as_type.as.OrderedWith.impl.Greater.00ebff.1)] @@ -3380,7 +3380,7 @@ fn CopyUnsignedLong() { // CHECK:STDOUT: %AddAssignWith.impl_witness_table.864 = impl_witness_table (%Core.import_ref.3ce), @Cpp.long.as.AddAssignWith.impl [concrete] // CHECK:STDOUT: %Core.Op.7fd: @Cpp.long.as.AddAssignWith.impl.%Cpp.long.as.AddAssignWith.impl.Op.type.1 (%Cpp.long.as.AddAssignWith.impl.Op.type.3959e4.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.AddAssignWith.impl.%Cpp.long.as.AddAssignWith.impl.Op.1 (constants.%Cpp.long.as.AddAssignWith.impl.Op.d1bf47.2)] // CHECK:STDOUT: %Core.import_ref.06c923.2: %i32.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%i32.as.ImplicitAs.impl.Convert] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a75 = impl_witness_table (%Core.import_ref.06c923.2), @i32.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a75 = impl_witness_table (%Core.import_ref.06c923.2), @i32.as.ImplicitAs.impl.133 [concrete] // CHECK:STDOUT: %Core.import_ref.720: @Cpp.long.as.SubAssignWith.impl.%Cpp.long.as.SubAssignWith.impl.Op.type.2 (%Cpp.long.as.SubAssignWith.impl.Op.type.f4b2d1.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.SubAssignWith.impl.%Cpp.long.as.SubAssignWith.impl.Op.2 (constants.%Cpp.long.as.SubAssignWith.impl.Op.5a5f49.1)] // CHECK:STDOUT: %SubAssignWith.impl_witness_table.b60 = impl_witness_table (%Core.import_ref.720), @Cpp.long.as.SubAssignWith.impl [concrete] // CHECK:STDOUT: %Core.Op.3ae: @Cpp.long.as.SubAssignWith.impl.%Cpp.long.as.SubAssignWith.impl.Op.type.1 (%Cpp.long.as.SubAssignWith.impl.Op.type.f4b2d1.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.SubAssignWith.impl.%Cpp.long.as.SubAssignWith.impl.Op.1 (constants.%Cpp.long.as.SubAssignWith.impl.Op.5a5f49.2)] @@ -3841,7 +3841,7 @@ fn CopyUnsignedLong() { // CHECK:STDOUT: %AddAssignWith.impl_witness_table.864 = impl_witness_table (%Core.import_ref.3ce), @Cpp.long.as.AddAssignWith.impl [concrete] // CHECK:STDOUT: %Core.Op.7fd: @Cpp.long.as.AddAssignWith.impl.%Cpp.long.as.AddAssignWith.impl.Op.type.1 (%Cpp.long.as.AddAssignWith.impl.Op.type.3959e4.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.AddAssignWith.impl.%Cpp.long.as.AddAssignWith.impl.Op.1 (constants.%Cpp.long.as.AddAssignWith.impl.Op.d1bf47.2)] // CHECK:STDOUT: %Core.import_ref.06c923.2: %i32.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%i32.as.ImplicitAs.impl.Convert] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a75 = impl_witness_table (%Core.import_ref.06c923.2), @i32.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a75 = impl_witness_table (%Core.import_ref.06c923.2), @i32.as.ImplicitAs.impl.133 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @CompoundAssignmentLongAndRuntimeI32() { diff --git a/toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.lp64.carbon b/toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.lp64.carbon index 9791a298c695..10376bf15186 100644 --- a/toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.lp64.carbon +++ b/toolchain/check/testdata/interop/cpp/primitive_types/long_and_long_long.lp64.carbon @@ -1439,10 +1439,10 @@ fn CopyUnsignedLongLong() { // CHECK:STDOUT: %Core.import_ref.adc9b: %Cpp.long_long.as.EqWith.impl.NotEqual.type.8e5 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.EqWith.impl.NotEqual.a6a] // CHECK:STDOUT: %EqWith.impl_witness_table.ed1 = impl_witness_table (%Core.import_ref.a87, %Core.import_ref.adc9b), @Cpp.long_long.as.EqWith.impl.eaa [concrete] // CHECK:STDOUT: %Core.import_ref.0e8: %Cpp.long_long.as.OrderedWith.impl.Less.type.335 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.OrderedWith.impl.Less.606] -// CHECK:STDOUT: %Core.import_ref.757: %Cpp.long_long.as.OrderedWith.impl.LessOrEquivalent.type.42c = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.OrderedWith.impl.LessOrEquivalent.0c8] +// CHECK:STDOUT: %Core.import_ref.757ec: %Cpp.long_long.as.OrderedWith.impl.LessOrEquivalent.type.42c = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.OrderedWith.impl.LessOrEquivalent.0c8] // CHECK:STDOUT: %Core.import_ref.c32c: %Cpp.long_long.as.OrderedWith.impl.Greater.type.725 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.OrderedWith.impl.Greater.7c8] // CHECK:STDOUT: %Core.import_ref.381: %Cpp.long_long.as.OrderedWith.impl.GreaterOrEquivalent.type.2d9 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.OrderedWith.impl.GreaterOrEquivalent.a09] -// CHECK:STDOUT: %OrderedWith.impl_witness_table.cc0 = impl_witness_table (%Core.import_ref.0e8, %Core.import_ref.757, %Core.import_ref.c32c, %Core.import_ref.381), @Cpp.long_long.as.OrderedWith.impl.278 [concrete] +// CHECK:STDOUT: %OrderedWith.impl_witness_table.cc0 = impl_witness_table (%Core.import_ref.0e8, %Core.import_ref.757ec, %Core.import_ref.c32c, %Core.import_ref.381), @Cpp.long_long.as.OrderedWith.impl.278 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ComparisonsHomogeneousLongLong() { @@ -1984,71 +1984,71 @@ fn CopyUnsignedLongLong() { // CHECK:STDOUT: %int_1.b19: %Cpp.long_long = int_value 1 [concrete] // CHECK:STDOUT: %EqWith.type.9fc: type = facet_type <@EqWith, @EqWith(%Cpp.long_long)> [concrete] // CHECK:STDOUT: %T.bf2: %ImplicitAs.type.0ec = symbolic_binding T, 0 [symbolic] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.925fdb.1: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.3, @T.as_type.as.EqWith.impl.6d3(%T.bf2) [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.925fdb.1: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.5, @T.as_type.as.EqWith.impl.6d3(%T.bf2) [symbolic] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.b16a99.1: %T.as_type.as.EqWith.impl.NotEqual.type.925fdb.1 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.3cb0e1.1: type = fn_type @T.as_type.as.EqWith.impl.Equal.3, @T.as_type.as.EqWith.impl.6d3(%T.bf2) [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.3cb0e1.1: type = fn_type @T.as_type.as.EqWith.impl.Equal.5, @T.as_type.as.EqWith.impl.6d3(%T.bf2) [symbolic] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.a1333e.1: %T.as_type.as.EqWith.impl.Equal.type.3cb0e1.1 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.925fdb.2: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.4, @T.as_type.as.EqWith.impl.6d3(%T.bf2) [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.925fdb.2: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.6, @T.as_type.as.EqWith.impl.6d3(%T.bf2) [symbolic] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.b16a99.2: %T.as_type.as.EqWith.impl.NotEqual.type.925fdb.2 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.3cb0e1.2: type = fn_type @T.as_type.as.EqWith.impl.Equal.4, @T.as_type.as.EqWith.impl.6d3(%T.bf2) [symbolic] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.3cb0e1.2: type = fn_type @T.as_type.as.EqWith.impl.Equal.6, @T.as_type.as.EqWith.impl.6d3(%T.bf2) [symbolic] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.a1333e.2: %T.as_type.as.EqWith.impl.Equal.type.3cb0e1.2 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.305: = impl_witness imports.%ImplicitAs.impl_witness_table.a87 [concrete] // CHECK:STDOUT: %ImplicitAs.facet.7a4: %ImplicitAs.type.0ec = facet_value %i64, (%ImplicitAs.impl_witness.305) [concrete] // CHECK:STDOUT: %EqWith.impl_witness.084: = impl_witness imports.%EqWith.impl_witness_table.db1, @T.as_type.as.EqWith.impl.6d3(%ImplicitAs.facet.7a4) [concrete] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.6d33d6.1: type = fn_type @T.as_type.as.EqWith.impl.Equal.4, @T.as_type.as.EqWith.impl.6d3(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.6d33d6.1: type = fn_type @T.as_type.as.EqWith.impl.Equal.6, @T.as_type.as.EqWith.impl.6d3(%ImplicitAs.facet.7a4) [concrete] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.817082.1: %T.as_type.as.EqWith.impl.Equal.type.6d33d6.1 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.2c42f8.1: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.4, @T.as_type.as.EqWith.impl.6d3(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.2c42f8.1: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.6, @T.as_type.as.EqWith.impl.6d3(%ImplicitAs.facet.7a4) [concrete] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.de7c60.1: %T.as_type.as.EqWith.impl.NotEqual.type.2c42f8.1 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.6d33d6.2: type = fn_type @T.as_type.as.EqWith.impl.Equal.3, @T.as_type.as.EqWith.impl.6d3(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.6d33d6.2: type = fn_type @T.as_type.as.EqWith.impl.Equal.5, @T.as_type.as.EqWith.impl.6d3(%ImplicitAs.facet.7a4) [concrete] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.817082.2: %T.as_type.as.EqWith.impl.Equal.type.6d33d6.2 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.2c42f8.2: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.3, @T.as_type.as.EqWith.impl.6d3(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.2c42f8.2: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.5, @T.as_type.as.EqWith.impl.6d3(%ImplicitAs.facet.7a4) [concrete] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.de7c60.2: %T.as_type.as.EqWith.impl.NotEqual.type.2c42f8.2 = struct_value () [concrete] // CHECK:STDOUT: %EqWith.facet.306: %EqWith.type.9fc = facet_value %i64, (%EqWith.impl_witness.084) [concrete] // CHECK:STDOUT: %EqWith.WithSelf.Equal.type.5b2: type = fn_type @EqWith.WithSelf.Equal, @EqWith.WithSelf(%Cpp.long_long, %EqWith.facet.306) [concrete] // CHECK:STDOUT: %EqWith.WithSelf.NotEqual.type.86d: type = fn_type @EqWith.WithSelf.NotEqual, @EqWith.WithSelf(%Cpp.long_long, %EqWith.facet.306) [concrete] // CHECK:STDOUT: %.183: type = fn_type_with_self_type %EqWith.WithSelf.Equal.type.5b2, %EqWith.facet.306 [concrete] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.specific_fn.044d32.1: = specific_function %T.as_type.as.EqWith.impl.Equal.817082.2, @T.as_type.as.EqWith.impl.Equal.3(%ImplicitAs.facet.7a4) [concrete] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.specific_fn.044d32.2: = specific_function %T.as_type.as.EqWith.impl.Equal.817082.1, @T.as_type.as.EqWith.impl.Equal.4(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.specific_fn.044d32.1: = specific_function %T.as_type.as.EqWith.impl.Equal.817082.2, @T.as_type.as.EqWith.impl.Equal.5(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.specific_fn.044d32.2: = specific_function %T.as_type.as.EqWith.impl.Equal.817082.1, @T.as_type.as.EqWith.impl.Equal.6(%ImplicitAs.facet.7a4) [concrete] // CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.3ae: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Cpp.long_long, %ImplicitAs.facet.7a4) [concrete] // CHECK:STDOUT: %.25e: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.3ae, %ImplicitAs.facet.7a4 [concrete] // CHECK:STDOUT: %i64.as.ImplicitAs.impl.Convert.type: type = fn_type @i64.as.ImplicitAs.impl.Convert [concrete] // CHECK:STDOUT: %i64.as.ImplicitAs.impl.Convert: %i64.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] // CHECK:STDOUT: %.eca: type = fn_type_with_self_type %EqWith.WithSelf.NotEqual.type.86d, %EqWith.facet.306 [concrete] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.specific_fn.b44c79.1: = specific_function %T.as_type.as.EqWith.impl.NotEqual.de7c60.2, @T.as_type.as.EqWith.impl.NotEqual.3(%ImplicitAs.facet.7a4) [concrete] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.specific_fn.b44c79.2: = specific_function %T.as_type.as.EqWith.impl.NotEqual.de7c60.1, @T.as_type.as.EqWith.impl.NotEqual.4(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.specific_fn.b44c79.1: = specific_function %T.as_type.as.EqWith.impl.NotEqual.de7c60.2, @T.as_type.as.EqWith.impl.NotEqual.5(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.specific_fn.b44c79.2: = specific_function %T.as_type.as.EqWith.impl.NotEqual.de7c60.1, @T.as_type.as.EqWith.impl.NotEqual.6(%ImplicitAs.facet.7a4) [concrete] // CHECK:STDOUT: %OrderedWith.type.456: type = facet_type <@OrderedWith, @OrderedWith(%Cpp.long_long)> [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.d6724c.1: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.3, @T.as_type.as.OrderedWith.impl.df2(%T.bf2) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.d6724c.1: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.5, @T.as_type.as.OrderedWith.impl.df2(%T.bf2) [symbolic] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.df5290.1: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.d6724c.1 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.4fb98a.1: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.3, @T.as_type.as.OrderedWith.impl.df2(%T.bf2) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.4fb98a.1: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.5, @T.as_type.as.OrderedWith.impl.df2(%T.bf2) [symbolic] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.878ae3.1: %T.as_type.as.OrderedWith.impl.Greater.type.4fb98a.1 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.3d985f.1: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.3, @T.as_type.as.OrderedWith.impl.df2(%T.bf2) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.3d985f.1: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.5, @T.as_type.as.OrderedWith.impl.df2(%T.bf2) [symbolic] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.2cb445.1: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.3d985f.1 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.2daa9a.1: type = fn_type @T.as_type.as.OrderedWith.impl.Less.3, @T.as_type.as.OrderedWith.impl.df2(%T.bf2) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.2daa9a.1: type = fn_type @T.as_type.as.OrderedWith.impl.Less.5, @T.as_type.as.OrderedWith.impl.df2(%T.bf2) [symbolic] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.c37ef5.1: %T.as_type.as.OrderedWith.impl.Less.type.2daa9a.1 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.d6724c.2: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.4, @T.as_type.as.OrderedWith.impl.df2(%T.bf2) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.d6724c.2: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.6, @T.as_type.as.OrderedWith.impl.df2(%T.bf2) [symbolic] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.df5290.2: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.d6724c.2 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.4fb98a.2: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.4, @T.as_type.as.OrderedWith.impl.df2(%T.bf2) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.4fb98a.2: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.6, @T.as_type.as.OrderedWith.impl.df2(%T.bf2) [symbolic] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.878ae3.2: %T.as_type.as.OrderedWith.impl.Greater.type.4fb98a.2 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.3d985f.2: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.4, @T.as_type.as.OrderedWith.impl.df2(%T.bf2) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.3d985f.2: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.6, @T.as_type.as.OrderedWith.impl.df2(%T.bf2) [symbolic] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.2cb445.2: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.3d985f.2 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.2daa9a.2: type = fn_type @T.as_type.as.OrderedWith.impl.Less.4, @T.as_type.as.OrderedWith.impl.df2(%T.bf2) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.2daa9a.2: type = fn_type @T.as_type.as.OrderedWith.impl.Less.6, @T.as_type.as.OrderedWith.impl.df2(%T.bf2) [symbolic] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.c37ef5.2: %T.as_type.as.OrderedWith.impl.Less.type.2daa9a.2 = struct_value () [symbolic] // CHECK:STDOUT: %OrderedWith.impl_witness.7e3: = impl_witness imports.%OrderedWith.impl_witness_table.8b4, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.7a4) [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.7b405f.1: type = fn_type @T.as_type.as.OrderedWith.impl.Less.4, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.7b405f.1: type = fn_type @T.as_type.as.OrderedWith.impl.Less.6, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.7a4) [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.c5f236.1: %T.as_type.as.OrderedWith.impl.Less.type.7b405f.1 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.577251.1: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.4, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.577251.1: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.6, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.7a4) [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.e5cfba.1: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.577251.1 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.085dd9.1: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.4, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.085dd9.1: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.6, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.7a4) [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.749015.1: %T.as_type.as.OrderedWith.impl.Greater.type.085dd9.1 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.0f0b65.1: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.4, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.0f0b65.1: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.6, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.7a4) [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.f86b3e.1: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.0f0b65.1 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.7b405f.2: type = fn_type @T.as_type.as.OrderedWith.impl.Less.3, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.7b405f.2: type = fn_type @T.as_type.as.OrderedWith.impl.Less.5, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.7a4) [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.c5f236.2: %T.as_type.as.OrderedWith.impl.Less.type.7b405f.2 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.577251.2: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.3, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.577251.2: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.5, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.7a4) [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.e5cfba.2: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.577251.2 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.085dd9.2: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.3, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.085dd9.2: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.5, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.7a4) [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.749015.2: %T.as_type.as.OrderedWith.impl.Greater.type.085dd9.2 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.0f0b65.2: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.3, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.0f0b65.2: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.5, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.7a4) [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.f86b3e.2: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.0f0b65.2 = struct_value () [concrete] // CHECK:STDOUT: %OrderedWith.facet.72a: %OrderedWith.type.456 = facet_value %i64, (%OrderedWith.impl_witness.7e3) [concrete] // CHECK:STDOUT: %OrderedWith.WithSelf.Less.type.606: type = fn_type @OrderedWith.WithSelf.Less, @OrderedWith.WithSelf(%Cpp.long_long, %OrderedWith.facet.72a) [concrete] @@ -2056,59 +2056,59 @@ fn CopyUnsignedLongLong() { // CHECK:STDOUT: %OrderedWith.WithSelf.Greater.type.f32: type = fn_type @OrderedWith.WithSelf.Greater, @OrderedWith.WithSelf(%Cpp.long_long, %OrderedWith.facet.72a) [concrete] // CHECK:STDOUT: %OrderedWith.WithSelf.GreaterOrEquivalent.type.15d: type = fn_type @OrderedWith.WithSelf.GreaterOrEquivalent, @OrderedWith.WithSelf(%Cpp.long_long, %OrderedWith.facet.72a) [concrete] // CHECK:STDOUT: %.af0: type = fn_type_with_self_type %OrderedWith.WithSelf.Greater.type.f32, %OrderedWith.facet.72a [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.specific_fn.cbc6c2.1: = specific_function %T.as_type.as.OrderedWith.impl.Greater.749015.2, @T.as_type.as.OrderedWith.impl.Greater.3(%ImplicitAs.facet.7a4) [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.specific_fn.cbc6c2.2: = specific_function %T.as_type.as.OrderedWith.impl.Greater.749015.1, @T.as_type.as.OrderedWith.impl.Greater.4(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.specific_fn.cbc6c2.1: = specific_function %T.as_type.as.OrderedWith.impl.Greater.749015.2, @T.as_type.as.OrderedWith.impl.Greater.5(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.specific_fn.cbc6c2.2: = specific_function %T.as_type.as.OrderedWith.impl.Greater.749015.1, @T.as_type.as.OrderedWith.impl.Greater.6(%ImplicitAs.facet.7a4) [concrete] // CHECK:STDOUT: %.901: type = fn_type_with_self_type %OrderedWith.WithSelf.Less.type.606, %OrderedWith.facet.72a [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.specific_fn.a8a2ad.1: = specific_function %T.as_type.as.OrderedWith.impl.Less.c5f236.2, @T.as_type.as.OrderedWith.impl.Less.3(%ImplicitAs.facet.7a4) [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.specific_fn.a8a2ad.2: = specific_function %T.as_type.as.OrderedWith.impl.Less.c5f236.1, @T.as_type.as.OrderedWith.impl.Less.4(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.specific_fn.a8a2ad.1: = specific_function %T.as_type.as.OrderedWith.impl.Less.c5f236.2, @T.as_type.as.OrderedWith.impl.Less.5(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.specific_fn.a8a2ad.2: = specific_function %T.as_type.as.OrderedWith.impl.Less.c5f236.1, @T.as_type.as.OrderedWith.impl.Less.6(%ImplicitAs.facet.7a4) [concrete] // CHECK:STDOUT: %.96b: type = fn_type_with_self_type %OrderedWith.WithSelf.GreaterOrEquivalent.type.15d, %OrderedWith.facet.72a [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.8a93e9.1: = specific_function %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.f86b3e.2, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.3(%ImplicitAs.facet.7a4) [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.8a93e9.2: = specific_function %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.f86b3e.1, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.4(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.8a93e9.1: = specific_function %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.f86b3e.2, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.5(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.8a93e9.2: = specific_function %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.f86b3e.1, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.6(%ImplicitAs.facet.7a4) [concrete] // CHECK:STDOUT: %.829: type = fn_type_with_self_type %OrderedWith.WithSelf.LessOrEquivalent.type.2a1, %OrderedWith.facet.72a [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.ab9ff7.1: = specific_function %T.as_type.as.OrderedWith.impl.LessOrEquivalent.e5cfba.2, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.3(%ImplicitAs.facet.7a4) [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.ab9ff7.2: = specific_function %T.as_type.as.OrderedWith.impl.LessOrEquivalent.e5cfba.1, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.4(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.ab9ff7.1: = specific_function %T.as_type.as.OrderedWith.impl.LessOrEquivalent.e5cfba.2, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.5(%ImplicitAs.facet.7a4) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.ab9ff7.2: = specific_function %T.as_type.as.OrderedWith.impl.LessOrEquivalent.e5cfba.1, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.6(%ImplicitAs.facet.7a4) [concrete] // CHECK:STDOUT: %EqWith.impl_witness.cb6: = impl_witness imports.%EqWith.impl_witness_table.db1, @T.as_type.as.EqWith.impl.6d3(%ImplicitAs.facet.2ed) [concrete] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.8e6244.1: type = fn_type @T.as_type.as.EqWith.impl.Equal.4, @T.as_type.as.EqWith.impl.6d3(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.8e6244.1: type = fn_type @T.as_type.as.EqWith.impl.Equal.6, @T.as_type.as.EqWith.impl.6d3(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.66756b.1: %T.as_type.as.EqWith.impl.Equal.type.8e6244.1 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.fb7a86.1: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.4, @T.as_type.as.EqWith.impl.6d3(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.fb7a86.1: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.6, @T.as_type.as.EqWith.impl.6d3(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.672038.1: %T.as_type.as.EqWith.impl.NotEqual.type.fb7a86.1 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.8e6244.2: type = fn_type @T.as_type.as.EqWith.impl.Equal.3, @T.as_type.as.EqWith.impl.6d3(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.type.8e6244.2: type = fn_type @T.as_type.as.EqWith.impl.Equal.5, @T.as_type.as.EqWith.impl.6d3(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.66756b.2: %T.as_type.as.EqWith.impl.Equal.type.8e6244.2 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.fb7a86.2: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.3, @T.as_type.as.EqWith.impl.6d3(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.type.fb7a86.2: type = fn_type @T.as_type.as.EqWith.impl.NotEqual.5, @T.as_type.as.EqWith.impl.6d3(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.672038.2: %T.as_type.as.EqWith.impl.NotEqual.type.fb7a86.2 = struct_value () [concrete] // CHECK:STDOUT: %EqWith.facet.83c: %EqWith.type.9fc = facet_value Core.IntLiteral, (%EqWith.impl_witness.cb6) [concrete] // CHECK:STDOUT: %EqWith.WithSelf.Equal.type.5b1: type = fn_type @EqWith.WithSelf.Equal, @EqWith.WithSelf(%Cpp.long_long, %EqWith.facet.83c) [concrete] // CHECK:STDOUT: %EqWith.WithSelf.NotEqual.type.a9f: type = fn_type @EqWith.WithSelf.NotEqual, @EqWith.WithSelf(%Cpp.long_long, %EqWith.facet.83c) [concrete] // CHECK:STDOUT: %.658: type = fn_type_with_self_type %EqWith.WithSelf.Equal.type.5b1, %EqWith.facet.83c [concrete] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.bound.2fcdd5.1: = bound_method %int_1.5b8, %T.as_type.as.EqWith.impl.Equal.66756b.2 [concrete] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.specific_fn.7834c5.1: = specific_function %T.as_type.as.EqWith.impl.Equal.66756b.2, @T.as_type.as.EqWith.impl.Equal.3(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.specific_fn.7834c5.1: = specific_function %T.as_type.as.EqWith.impl.Equal.66756b.2, @T.as_type.as.EqWith.impl.Equal.5(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %bound_method.7c9d36.1: = bound_method %int_1.5b8, %T.as_type.as.EqWith.impl.Equal.specific_fn.7834c5.1 [concrete] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.bound.2fcdd5.2: = bound_method %int_1.5b8, %T.as_type.as.EqWith.impl.Equal.66756b.1 [concrete] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.specific_fn.7834c5.2: = specific_function %T.as_type.as.EqWith.impl.Equal.66756b.1, @T.as_type.as.EqWith.impl.Equal.4(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.specific_fn.7834c5.2: = specific_function %T.as_type.as.EqWith.impl.Equal.66756b.1, @T.as_type.as.EqWith.impl.Equal.6(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %bound_method.7c9d36.2: = bound_method %int_1.5b8, %T.as_type.as.EqWith.impl.Equal.specific_fn.7834c5.2 [concrete] // CHECK:STDOUT: %.1f9: type = fn_type_with_self_type %EqWith.WithSelf.NotEqual.type.a9f, %EqWith.facet.83c [concrete] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.bound.a9911b.1: = bound_method %int_1.5b8, %T.as_type.as.EqWith.impl.NotEqual.672038.2 [concrete] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.specific_fn.598adf.1: = specific_function %T.as_type.as.EqWith.impl.NotEqual.672038.2, @T.as_type.as.EqWith.impl.NotEqual.3(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.specific_fn.598adf.1: = specific_function %T.as_type.as.EqWith.impl.NotEqual.672038.2, @T.as_type.as.EqWith.impl.NotEqual.5(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %bound_method.1f073e.1: = bound_method %int_1.5b8, %T.as_type.as.EqWith.impl.NotEqual.specific_fn.598adf.1 [concrete] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.bound.a9911b.2: = bound_method %int_1.5b8, %T.as_type.as.EqWith.impl.NotEqual.672038.1 [concrete] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.specific_fn.598adf.2: = specific_function %T.as_type.as.EqWith.impl.NotEqual.672038.1, @T.as_type.as.EqWith.impl.NotEqual.4(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.specific_fn.598adf.2: = specific_function %T.as_type.as.EqWith.impl.NotEqual.672038.1, @T.as_type.as.EqWith.impl.NotEqual.6(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %bound_method.1f073e.2: = bound_method %int_1.5b8, %T.as_type.as.EqWith.impl.NotEqual.specific_fn.598adf.2 [concrete] // CHECK:STDOUT: %OrderedWith.impl_witness.ccd: = impl_witness imports.%OrderedWith.impl_witness_table.8b4, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.2ed) [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.28a50f.1: type = fn_type @T.as_type.as.OrderedWith.impl.Less.4, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.28a50f.1: type = fn_type @T.as_type.as.OrderedWith.impl.Less.6, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.09733d.1: %T.as_type.as.OrderedWith.impl.Less.type.28a50f.1 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.1522a4.1: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.4, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.1522a4.1: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.6, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.b7cd44.1: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.1522a4.1 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.e2356e.1: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.4, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.e2356e.1: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.6, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.a80774.1: %T.as_type.as.OrderedWith.impl.Greater.type.e2356e.1 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.09194f.1: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.4, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.09194f.1: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.6, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.ae8de7.1: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.09194f.1 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.28a50f.2: type = fn_type @T.as_type.as.OrderedWith.impl.Less.3, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.type.28a50f.2: type = fn_type @T.as_type.as.OrderedWith.impl.Less.5, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.09733d.2: %T.as_type.as.OrderedWith.impl.Less.type.28a50f.2 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.1522a4.2: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.3, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.1522a4.2: type = fn_type @T.as_type.as.OrderedWith.impl.LessOrEquivalent.5, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.b7cd44.2: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.1522a4.2 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.e2356e.2: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.3, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.type.e2356e.2: type = fn_type @T.as_type.as.OrderedWith.impl.Greater.5, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.a80774.2: %T.as_type.as.OrderedWith.impl.Greater.type.e2356e.2 = struct_value () [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.09194f.2: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.3, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.09194f.2: type = fn_type @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.5, @T.as_type.as.OrderedWith.impl.df2(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.ae8de7.2: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.09194f.2 = struct_value () [concrete] // CHECK:STDOUT: %OrderedWith.facet.54d: %OrderedWith.type.456 = facet_value Core.IntLiteral, (%OrderedWith.impl_witness.ccd) [concrete] // CHECK:STDOUT: %OrderedWith.WithSelf.Less.type.a56: type = fn_type @OrderedWith.WithSelf.Less, @OrderedWith.WithSelf(%Cpp.long_long, %OrderedWith.facet.54d) [concrete] @@ -2117,31 +2117,31 @@ fn CopyUnsignedLongLong() { // CHECK:STDOUT: %OrderedWith.WithSelf.GreaterOrEquivalent.type.6ad: type = fn_type @OrderedWith.WithSelf.GreaterOrEquivalent, @OrderedWith.WithSelf(%Cpp.long_long, %OrderedWith.facet.54d) [concrete] // CHECK:STDOUT: %.1e0: type = fn_type_with_self_type %OrderedWith.WithSelf.Greater.type.22c, %OrderedWith.facet.54d [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.bound.ba4552.1: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.Greater.a80774.2 [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.specific_fn.3eccd1.1: = specific_function %T.as_type.as.OrderedWith.impl.Greater.a80774.2, @T.as_type.as.OrderedWith.impl.Greater.3(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.specific_fn.3eccd1.1: = specific_function %T.as_type.as.OrderedWith.impl.Greater.a80774.2, @T.as_type.as.OrderedWith.impl.Greater.5(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %bound_method.560bca.1: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.Greater.specific_fn.3eccd1.1 [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.bound.ba4552.2: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.Greater.a80774.1 [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.specific_fn.3eccd1.2: = specific_function %T.as_type.as.OrderedWith.impl.Greater.a80774.1, @T.as_type.as.OrderedWith.impl.Greater.4(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.specific_fn.3eccd1.2: = specific_function %T.as_type.as.OrderedWith.impl.Greater.a80774.1, @T.as_type.as.OrderedWith.impl.Greater.6(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %bound_method.560bca.2: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.Greater.specific_fn.3eccd1.2 [concrete] // CHECK:STDOUT: %.4c9: type = fn_type_with_self_type %OrderedWith.WithSelf.Less.type.a56, %OrderedWith.facet.54d [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.bound.069497.1: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.Less.09733d.2 [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.specific_fn.0beaf8.1: = specific_function %T.as_type.as.OrderedWith.impl.Less.09733d.2, @T.as_type.as.OrderedWith.impl.Less.3(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.specific_fn.0beaf8.1: = specific_function %T.as_type.as.OrderedWith.impl.Less.09733d.2, @T.as_type.as.OrderedWith.impl.Less.5(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %bound_method.103f49.1: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.Less.specific_fn.0beaf8.1 [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.bound.069497.2: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.Less.09733d.1 [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.specific_fn.0beaf8.2: = specific_function %T.as_type.as.OrderedWith.impl.Less.09733d.1, @T.as_type.as.OrderedWith.impl.Less.4(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.specific_fn.0beaf8.2: = specific_function %T.as_type.as.OrderedWith.impl.Less.09733d.1, @T.as_type.as.OrderedWith.impl.Less.6(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %bound_method.103f49.2: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.Less.specific_fn.0beaf8.2 [concrete] // CHECK:STDOUT: %.b09: type = fn_type_with_self_type %OrderedWith.WithSelf.GreaterOrEquivalent.type.6ad, %OrderedWith.facet.54d [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.bound.22317d.1: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.ae8de7.2 [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.371f57.1: = specific_function %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.ae8de7.2, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.3(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.371f57.1: = specific_function %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.ae8de7.2, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.5(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %bound_method.ffa540.1: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.371f57.1 [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.bound.22317d.2: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.ae8de7.1 [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.371f57.2: = specific_function %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.ae8de7.1, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.4(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.371f57.2: = specific_function %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.ae8de7.1, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.6(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %bound_method.ffa540.2: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.371f57.2 [concrete] // CHECK:STDOUT: %.cab: type = fn_type_with_self_type %OrderedWith.WithSelf.LessOrEquivalent.type.21f, %OrderedWith.facet.54d [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.bound.2eaa72.1: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.LessOrEquivalent.b7cd44.2 [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.05fce2.1: = specific_function %T.as_type.as.OrderedWith.impl.LessOrEquivalent.b7cd44.2, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.3(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.05fce2.1: = specific_function %T.as_type.as.OrderedWith.impl.LessOrEquivalent.b7cd44.2, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.5(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %bound_method.83e687.1: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.05fce2.1 [concrete] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.bound.2eaa72.2: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.LessOrEquivalent.b7cd44.1 [concrete] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.05fce2.2: = specific_function %T.as_type.as.OrderedWith.impl.LessOrEquivalent.b7cd44.1, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.4(%ImplicitAs.facet.2ed) [concrete] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.05fce2.2: = specific_function %T.as_type.as.OrderedWith.impl.LessOrEquivalent.b7cd44.1, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.6(%ImplicitAs.facet.2ed) [concrete] // CHECK:STDOUT: %bound_method.83e687.2: = bound_method %int_1.5b8, %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.05fce2.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2195,12 +2195,12 @@ fn CopyUnsignedLongLong() { // CHECK:STDOUT: %.loc10_5.1: %ImplicitAs.type.0ec = converted constants.%i64, %ImplicitAs.facet.loc10_5.1 [concrete = constants.%ImplicitAs.facet.7a4] // CHECK:STDOUT: %ImplicitAs.facet.loc10_5.2: %ImplicitAs.type.0ec = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.305) [concrete = constants.%ImplicitAs.facet.7a4] // CHECK:STDOUT: %.loc10_5.2: %ImplicitAs.type.0ec = converted constants.%i64, %ImplicitAs.facet.loc10_5.2 [concrete = constants.%ImplicitAs.facet.7a4] -// CHECK:STDOUT: %specific_fn.loc10: = specific_function %impl.elem0.loc10_5, @T.as_type.as.EqWith.impl.Equal.3(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.EqWith.impl.Equal.specific_fn.044d32.1] +// CHECK:STDOUT: %specific_fn.loc10: = specific_function %impl.elem0.loc10_5, @T.as_type.as.EqWith.impl.Equal.5(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.EqWith.impl.Equal.specific_fn.044d32.1] // CHECK:STDOUT: %bound_method.loc10_5.2: = bound_method %b.ref.loc10, %specific_fn.loc10 // CHECK:STDOUT: %.loc10_5.3: %T.as_type.as.EqWith.impl.Equal.type.6d33d6.1 = specific_constant imports.%Core.Equal.4f5, @T.as_type.as.EqWith.impl.6d3(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.EqWith.impl.Equal.817082.1] // CHECK:STDOUT: %Equal.ref.loc10: %T.as_type.as.EqWith.impl.Equal.type.6d33d6.1 = name_ref Equal, %.loc10_5.3 [concrete = constants.%T.as_type.as.EqWith.impl.Equal.817082.1] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.bound.loc10: = bound_method %b.ref.loc10, %Equal.ref.loc10 -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.specific_fn.loc10: = specific_function %Equal.ref.loc10, @T.as_type.as.EqWith.impl.Equal.4(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.EqWith.impl.Equal.specific_fn.044d32.2] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.specific_fn.loc10: = specific_function %Equal.ref.loc10, @T.as_type.as.EqWith.impl.Equal.6(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.EqWith.impl.Equal.specific_fn.044d32.2] // CHECK:STDOUT: %bound_method.loc10_5.3: = bound_method %b.ref.loc10, %T.as_type.as.EqWith.impl.Equal.specific_fn.loc10 // CHECK:STDOUT: %impl.elem0.loc10_3: %.25e = impl_witness_access constants.%ImplicitAs.impl_witness.305, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert] // CHECK:STDOUT: %bound_method.loc10_3: = bound_method %b.ref.loc10, %impl.elem0.loc10_3 @@ -2216,12 +2216,12 @@ fn CopyUnsignedLongLong() { // CHECK:STDOUT: %.loc11_5.1: %ImplicitAs.type.0ec = converted constants.%i64, %ImplicitAs.facet.loc11_5.1 [concrete = constants.%ImplicitAs.facet.7a4] // CHECK:STDOUT: %ImplicitAs.facet.loc11_5.2: %ImplicitAs.type.0ec = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.305) [concrete = constants.%ImplicitAs.facet.7a4] // CHECK:STDOUT: %.loc11_5.2: %ImplicitAs.type.0ec = converted constants.%i64, %ImplicitAs.facet.loc11_5.2 [concrete = constants.%ImplicitAs.facet.7a4] -// CHECK:STDOUT: %specific_fn.loc11: = specific_function %impl.elem1.loc11, @T.as_type.as.EqWith.impl.NotEqual.3(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.specific_fn.b44c79.1] +// CHECK:STDOUT: %specific_fn.loc11: = specific_function %impl.elem1.loc11, @T.as_type.as.EqWith.impl.NotEqual.5(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.specific_fn.b44c79.1] // CHECK:STDOUT: %bound_method.loc11_5.2: = bound_method %b.ref.loc11, %specific_fn.loc11 // CHECK:STDOUT: %.loc11_5.3: %T.as_type.as.EqWith.impl.NotEqual.type.2c42f8.1 = specific_constant imports.%Core.NotEqual.0b2, @T.as_type.as.EqWith.impl.6d3(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.de7c60.1] // CHECK:STDOUT: %NotEqual.ref.loc11: %T.as_type.as.EqWith.impl.NotEqual.type.2c42f8.1 = name_ref NotEqual, %.loc11_5.3 [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.de7c60.1] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.bound.loc11: = bound_method %b.ref.loc11, %NotEqual.ref.loc11 -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.specific_fn.loc11: = specific_function %NotEqual.ref.loc11, @T.as_type.as.EqWith.impl.NotEqual.4(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.specific_fn.b44c79.2] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.specific_fn.loc11: = specific_function %NotEqual.ref.loc11, @T.as_type.as.EqWith.impl.NotEqual.6(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.specific_fn.b44c79.2] // CHECK:STDOUT: %bound_method.loc11_5.3: = bound_method %b.ref.loc11, %T.as_type.as.EqWith.impl.NotEqual.specific_fn.loc11 // CHECK:STDOUT: %impl.elem0.loc11: %.25e = impl_witness_access constants.%ImplicitAs.impl_witness.305, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert] // CHECK:STDOUT: %bound_method.loc11_3: = bound_method %b.ref.loc11, %impl.elem0.loc11 @@ -2237,12 +2237,12 @@ fn CopyUnsignedLongLong() { // CHECK:STDOUT: %.loc12_5.1: %ImplicitAs.type.0ec = converted constants.%i64, %ImplicitAs.facet.loc12_5.1 [concrete = constants.%ImplicitAs.facet.7a4] // CHECK:STDOUT: %ImplicitAs.facet.loc12_5.2: %ImplicitAs.type.0ec = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.305) [concrete = constants.%ImplicitAs.facet.7a4] // CHECK:STDOUT: %.loc12_5.2: %ImplicitAs.type.0ec = converted constants.%i64, %ImplicitAs.facet.loc12_5.2 [concrete = constants.%ImplicitAs.facet.7a4] -// CHECK:STDOUT: %specific_fn.loc12: = specific_function %impl.elem2.loc12, @T.as_type.as.OrderedWith.impl.Greater.3(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.specific_fn.cbc6c2.1] +// CHECK:STDOUT: %specific_fn.loc12: = specific_function %impl.elem2.loc12, @T.as_type.as.OrderedWith.impl.Greater.5(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.specific_fn.cbc6c2.1] // CHECK:STDOUT: %bound_method.loc12_5.2: = bound_method %b.ref.loc12, %specific_fn.loc12 // CHECK:STDOUT: %.loc12_5.3: %T.as_type.as.OrderedWith.impl.Greater.type.085dd9.1 = specific_constant imports.%Core.Greater.c24, @T.as_type.as.OrderedWith.impl.df2(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.749015.1] // CHECK:STDOUT: %Greater.ref.loc12: %T.as_type.as.OrderedWith.impl.Greater.type.085dd9.1 = name_ref Greater, %.loc12_5.3 [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.749015.1] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.bound.loc12: = bound_method %b.ref.loc12, %Greater.ref.loc12 -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.specific_fn.loc12: = specific_function %Greater.ref.loc12, @T.as_type.as.OrderedWith.impl.Greater.4(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.specific_fn.cbc6c2.2] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.specific_fn.loc12: = specific_function %Greater.ref.loc12, @T.as_type.as.OrderedWith.impl.Greater.6(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.specific_fn.cbc6c2.2] // CHECK:STDOUT: %bound_method.loc12_5.3: = bound_method %b.ref.loc12, %T.as_type.as.OrderedWith.impl.Greater.specific_fn.loc12 // CHECK:STDOUT: %impl.elem0.loc12: %.25e = impl_witness_access constants.%ImplicitAs.impl_witness.305, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert] // CHECK:STDOUT: %bound_method.loc12_3: = bound_method %b.ref.loc12, %impl.elem0.loc12 @@ -2258,12 +2258,12 @@ fn CopyUnsignedLongLong() { // CHECK:STDOUT: %.loc13_5.1: %ImplicitAs.type.0ec = converted constants.%i64, %ImplicitAs.facet.loc13_5.1 [concrete = constants.%ImplicitAs.facet.7a4] // CHECK:STDOUT: %ImplicitAs.facet.loc13_5.2: %ImplicitAs.type.0ec = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.305) [concrete = constants.%ImplicitAs.facet.7a4] // CHECK:STDOUT: %.loc13_5.2: %ImplicitAs.type.0ec = converted constants.%i64, %ImplicitAs.facet.loc13_5.2 [concrete = constants.%ImplicitAs.facet.7a4] -// CHECK:STDOUT: %specific_fn.loc13: = specific_function %impl.elem0.loc13_5, @T.as_type.as.OrderedWith.impl.Less.3(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.specific_fn.a8a2ad.1] +// CHECK:STDOUT: %specific_fn.loc13: = specific_function %impl.elem0.loc13_5, @T.as_type.as.OrderedWith.impl.Less.5(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.specific_fn.a8a2ad.1] // CHECK:STDOUT: %bound_method.loc13_5.2: = bound_method %b.ref.loc13, %specific_fn.loc13 // CHECK:STDOUT: %.loc13_5.3: %T.as_type.as.OrderedWith.impl.Less.type.7b405f.1 = specific_constant imports.%Core.Less.2d9, @T.as_type.as.OrderedWith.impl.df2(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.c5f236.1] // CHECK:STDOUT: %Less.ref.loc13: %T.as_type.as.OrderedWith.impl.Less.type.7b405f.1 = name_ref Less, %.loc13_5.3 [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.c5f236.1] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.bound.loc13: = bound_method %b.ref.loc13, %Less.ref.loc13 -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.specific_fn.loc13: = specific_function %Less.ref.loc13, @T.as_type.as.OrderedWith.impl.Less.4(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.specific_fn.a8a2ad.2] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.specific_fn.loc13: = specific_function %Less.ref.loc13, @T.as_type.as.OrderedWith.impl.Less.6(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.specific_fn.a8a2ad.2] // CHECK:STDOUT: %bound_method.loc13_5.3: = bound_method %b.ref.loc13, %T.as_type.as.OrderedWith.impl.Less.specific_fn.loc13 // CHECK:STDOUT: %impl.elem0.loc13_3: %.25e = impl_witness_access constants.%ImplicitAs.impl_witness.305, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert] // CHECK:STDOUT: %bound_method.loc13_3: = bound_method %b.ref.loc13, %impl.elem0.loc13_3 @@ -2279,12 +2279,12 @@ fn CopyUnsignedLongLong() { // CHECK:STDOUT: %.loc14_5.1: %ImplicitAs.type.0ec = converted constants.%i64, %ImplicitAs.facet.loc14_5.1 [concrete = constants.%ImplicitAs.facet.7a4] // CHECK:STDOUT: %ImplicitAs.facet.loc14_5.2: %ImplicitAs.type.0ec = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.305) [concrete = constants.%ImplicitAs.facet.7a4] // CHECK:STDOUT: %.loc14_5.2: %ImplicitAs.type.0ec = converted constants.%i64, %ImplicitAs.facet.loc14_5.2 [concrete = constants.%ImplicitAs.facet.7a4] -// CHECK:STDOUT: %specific_fn.loc14: = specific_function %impl.elem3.loc14, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.3(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.8a93e9.1] +// CHECK:STDOUT: %specific_fn.loc14: = specific_function %impl.elem3.loc14, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.5(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.8a93e9.1] // CHECK:STDOUT: %bound_method.loc14_5.2: = bound_method %b.ref.loc14, %specific_fn.loc14 // CHECK:STDOUT: %.loc14_5.3: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.0f0b65.1 = specific_constant imports.%Core.GreaterOrEquivalent.8e2, @T.as_type.as.OrderedWith.impl.df2(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.f86b3e.1] // CHECK:STDOUT: %GreaterOrEquivalent.ref.loc14: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.0f0b65.1 = name_ref GreaterOrEquivalent, %.loc14_5.3 [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.f86b3e.1] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.bound.loc14: = bound_method %b.ref.loc14, %GreaterOrEquivalent.ref.loc14 -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.loc14: = specific_function %GreaterOrEquivalent.ref.loc14, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.4(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.8a93e9.2] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.loc14: = specific_function %GreaterOrEquivalent.ref.loc14, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.6(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.8a93e9.2] // CHECK:STDOUT: %bound_method.loc14_5.3: = bound_method %b.ref.loc14, %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.loc14 // CHECK:STDOUT: %impl.elem0.loc14: %.25e = impl_witness_access constants.%ImplicitAs.impl_witness.305, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert] // CHECK:STDOUT: %bound_method.loc14_3: = bound_method %b.ref.loc14, %impl.elem0.loc14 @@ -2300,12 +2300,12 @@ fn CopyUnsignedLongLong() { // CHECK:STDOUT: %.loc15_5.1: %ImplicitAs.type.0ec = converted constants.%i64, %ImplicitAs.facet.loc15_5.1 [concrete = constants.%ImplicitAs.facet.7a4] // CHECK:STDOUT: %ImplicitAs.facet.loc15_5.2: %ImplicitAs.type.0ec = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.305) [concrete = constants.%ImplicitAs.facet.7a4] // CHECK:STDOUT: %.loc15_5.2: %ImplicitAs.type.0ec = converted constants.%i64, %ImplicitAs.facet.loc15_5.2 [concrete = constants.%ImplicitAs.facet.7a4] -// CHECK:STDOUT: %specific_fn.loc15: = specific_function %impl.elem1.loc15, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.3(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.ab9ff7.1] +// CHECK:STDOUT: %specific_fn.loc15: = specific_function %impl.elem1.loc15, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.5(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.ab9ff7.1] // CHECK:STDOUT: %bound_method.loc15_5.2: = bound_method %b.ref.loc15, %specific_fn.loc15 // CHECK:STDOUT: %.loc15_5.3: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.577251.1 = specific_constant imports.%Core.LessOrEquivalent.d90, @T.as_type.as.OrderedWith.impl.df2(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.e5cfba.1] // CHECK:STDOUT: %LessOrEquivalent.ref.loc15: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.577251.1 = name_ref LessOrEquivalent, %.loc15_5.3 [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.e5cfba.1] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.bound.loc15: = bound_method %b.ref.loc15, %LessOrEquivalent.ref.loc15 -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.loc15: = specific_function %LessOrEquivalent.ref.loc15, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.4(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.ab9ff7.2] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.loc15: = specific_function %LessOrEquivalent.ref.loc15, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.6(constants.%ImplicitAs.facet.7a4) [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.ab9ff7.2] // CHECK:STDOUT: %bound_method.loc15_5.3: = bound_method %b.ref.loc15, %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.loc15 // CHECK:STDOUT: %impl.elem0.loc15: %.25e = impl_witness_access constants.%ImplicitAs.impl_witness.305, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert] // CHECK:STDOUT: %bound_method.loc15_3: = bound_method %b.ref.loc15, %impl.elem0.loc15 @@ -2321,12 +2321,12 @@ fn CopyUnsignedLongLong() { // CHECK:STDOUT: %.loc17_5.1: %ImplicitAs.type.0ec = converted Core.IntLiteral, %ImplicitAs.facet.loc17_5.1 [concrete = constants.%ImplicitAs.facet.2ed] // CHECK:STDOUT: %ImplicitAs.facet.loc17_5.2: %ImplicitAs.type.0ec = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.660) [concrete = constants.%ImplicitAs.facet.2ed] // CHECK:STDOUT: %.loc17_5.2: %ImplicitAs.type.0ec = converted Core.IntLiteral, %ImplicitAs.facet.loc17_5.2 [concrete = constants.%ImplicitAs.facet.2ed] -// CHECK:STDOUT: %specific_fn.loc17: = specific_function %impl.elem0.loc17_5, @T.as_type.as.EqWith.impl.Equal.3(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.EqWith.impl.Equal.specific_fn.7834c5.1] +// CHECK:STDOUT: %specific_fn.loc17: = specific_function %impl.elem0.loc17_5, @T.as_type.as.EqWith.impl.Equal.5(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.EqWith.impl.Equal.specific_fn.7834c5.1] // CHECK:STDOUT: %bound_method.loc17_5.2: = bound_method %int_1.loc17, %specific_fn.loc17 [concrete = constants.%bound_method.7c9d36.1] // CHECK:STDOUT: %.loc17_5.3: %T.as_type.as.EqWith.impl.Equal.type.8e6244.1 = specific_constant imports.%Core.Equal.4f5, @T.as_type.as.EqWith.impl.6d3(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.EqWith.impl.Equal.66756b.1] // CHECK:STDOUT: %Equal.ref.loc17: %T.as_type.as.EqWith.impl.Equal.type.8e6244.1 = name_ref Equal, %.loc17_5.3 [concrete = constants.%T.as_type.as.EqWith.impl.Equal.66756b.1] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.bound.loc17: = bound_method %int_1.loc17, %Equal.ref.loc17 [concrete = constants.%T.as_type.as.EqWith.impl.Equal.bound.2fcdd5.2] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.specific_fn.loc17: = specific_function %Equal.ref.loc17, @T.as_type.as.EqWith.impl.Equal.4(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.EqWith.impl.Equal.specific_fn.7834c5.2] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.Equal.specific_fn.loc17: = specific_function %Equal.ref.loc17, @T.as_type.as.EqWith.impl.Equal.6(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.EqWith.impl.Equal.specific_fn.7834c5.2] // CHECK:STDOUT: %bound_method.loc17_5.3: = bound_method %int_1.loc17, %T.as_type.as.EqWith.impl.Equal.specific_fn.loc17 [concrete = constants.%bound_method.7c9d36.2] // CHECK:STDOUT: %impl.elem0.loc17_3: %.ca2 = impl_witness_access constants.%ImplicitAs.impl_witness.660, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] // CHECK:STDOUT: %bound_method.loc17_3: = bound_method %int_1.loc17, %impl.elem0.loc17_3 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] @@ -2342,12 +2342,12 @@ fn CopyUnsignedLongLong() { // CHECK:STDOUT: %.loc18_5.1: %ImplicitAs.type.0ec = converted Core.IntLiteral, %ImplicitAs.facet.loc18_5.1 [concrete = constants.%ImplicitAs.facet.2ed] // CHECK:STDOUT: %ImplicitAs.facet.loc18_5.2: %ImplicitAs.type.0ec = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.660) [concrete = constants.%ImplicitAs.facet.2ed] // CHECK:STDOUT: %.loc18_5.2: %ImplicitAs.type.0ec = converted Core.IntLiteral, %ImplicitAs.facet.loc18_5.2 [concrete = constants.%ImplicitAs.facet.2ed] -// CHECK:STDOUT: %specific_fn.loc18: = specific_function %impl.elem1.loc18, @T.as_type.as.EqWith.impl.NotEqual.3(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.specific_fn.598adf.1] +// CHECK:STDOUT: %specific_fn.loc18: = specific_function %impl.elem1.loc18, @T.as_type.as.EqWith.impl.NotEqual.5(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.specific_fn.598adf.1] // CHECK:STDOUT: %bound_method.loc18_5.2: = bound_method %int_1.loc18, %specific_fn.loc18 [concrete = constants.%bound_method.1f073e.1] // CHECK:STDOUT: %.loc18_5.3: %T.as_type.as.EqWith.impl.NotEqual.type.fb7a86.1 = specific_constant imports.%Core.NotEqual.0b2, @T.as_type.as.EqWith.impl.6d3(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.672038.1] // CHECK:STDOUT: %NotEqual.ref.loc18: %T.as_type.as.EqWith.impl.NotEqual.type.fb7a86.1 = name_ref NotEqual, %.loc18_5.3 [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.672038.1] // CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.bound.loc18: = bound_method %int_1.loc18, %NotEqual.ref.loc18 [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.bound.a9911b.2] -// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.specific_fn.loc18: = specific_function %NotEqual.ref.loc18, @T.as_type.as.EqWith.impl.NotEqual.4(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.specific_fn.598adf.2] +// CHECK:STDOUT: %T.as_type.as.EqWith.impl.NotEqual.specific_fn.loc18: = specific_function %NotEqual.ref.loc18, @T.as_type.as.EqWith.impl.NotEqual.6(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.EqWith.impl.NotEqual.specific_fn.598adf.2] // CHECK:STDOUT: %bound_method.loc18_5.3: = bound_method %int_1.loc18, %T.as_type.as.EqWith.impl.NotEqual.specific_fn.loc18 [concrete = constants.%bound_method.1f073e.2] // CHECK:STDOUT: %impl.elem0.loc18: %.ca2 = impl_witness_access constants.%ImplicitAs.impl_witness.660, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] // CHECK:STDOUT: %bound_method.loc18_3: = bound_method %int_1.loc18, %impl.elem0.loc18 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] @@ -2363,12 +2363,12 @@ fn CopyUnsignedLongLong() { // CHECK:STDOUT: %.loc19_5.1: %ImplicitAs.type.0ec = converted Core.IntLiteral, %ImplicitAs.facet.loc19_5.1 [concrete = constants.%ImplicitAs.facet.2ed] // CHECK:STDOUT: %ImplicitAs.facet.loc19_5.2: %ImplicitAs.type.0ec = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.660) [concrete = constants.%ImplicitAs.facet.2ed] // CHECK:STDOUT: %.loc19_5.2: %ImplicitAs.type.0ec = converted Core.IntLiteral, %ImplicitAs.facet.loc19_5.2 [concrete = constants.%ImplicitAs.facet.2ed] -// CHECK:STDOUT: %specific_fn.loc19: = specific_function %impl.elem2.loc19, @T.as_type.as.OrderedWith.impl.Greater.3(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.specific_fn.3eccd1.1] +// CHECK:STDOUT: %specific_fn.loc19: = specific_function %impl.elem2.loc19, @T.as_type.as.OrderedWith.impl.Greater.5(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.specific_fn.3eccd1.1] // CHECK:STDOUT: %bound_method.loc19_5.2: = bound_method %int_1.loc19, %specific_fn.loc19 [concrete = constants.%bound_method.560bca.1] // CHECK:STDOUT: %.loc19_5.3: %T.as_type.as.OrderedWith.impl.Greater.type.e2356e.1 = specific_constant imports.%Core.Greater.c24, @T.as_type.as.OrderedWith.impl.df2(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.a80774.1] // CHECK:STDOUT: %Greater.ref.loc19: %T.as_type.as.OrderedWith.impl.Greater.type.e2356e.1 = name_ref Greater, %.loc19_5.3 [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.a80774.1] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.bound.loc19: = bound_method %int_1.loc19, %Greater.ref.loc19 [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.bound.ba4552.2] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.specific_fn.loc19: = specific_function %Greater.ref.loc19, @T.as_type.as.OrderedWith.impl.Greater.4(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.specific_fn.3eccd1.2] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Greater.specific_fn.loc19: = specific_function %Greater.ref.loc19, @T.as_type.as.OrderedWith.impl.Greater.6(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.Greater.specific_fn.3eccd1.2] // CHECK:STDOUT: %bound_method.loc19_5.3: = bound_method %int_1.loc19, %T.as_type.as.OrderedWith.impl.Greater.specific_fn.loc19 [concrete = constants.%bound_method.560bca.2] // CHECK:STDOUT: %impl.elem0.loc19: %.ca2 = impl_witness_access constants.%ImplicitAs.impl_witness.660, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] // CHECK:STDOUT: %bound_method.loc19_3: = bound_method %int_1.loc19, %impl.elem0.loc19 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] @@ -2384,12 +2384,12 @@ fn CopyUnsignedLongLong() { // CHECK:STDOUT: %.loc20_5.1: %ImplicitAs.type.0ec = converted Core.IntLiteral, %ImplicitAs.facet.loc20_5.1 [concrete = constants.%ImplicitAs.facet.2ed] // CHECK:STDOUT: %ImplicitAs.facet.loc20_5.2: %ImplicitAs.type.0ec = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.660) [concrete = constants.%ImplicitAs.facet.2ed] // CHECK:STDOUT: %.loc20_5.2: %ImplicitAs.type.0ec = converted Core.IntLiteral, %ImplicitAs.facet.loc20_5.2 [concrete = constants.%ImplicitAs.facet.2ed] -// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20_5, @T.as_type.as.OrderedWith.impl.Less.3(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.specific_fn.0beaf8.1] +// CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20_5, @T.as_type.as.OrderedWith.impl.Less.5(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.specific_fn.0beaf8.1] // CHECK:STDOUT: %bound_method.loc20_5.2: = bound_method %int_1.loc20, %specific_fn.loc20 [concrete = constants.%bound_method.103f49.1] // CHECK:STDOUT: %.loc20_5.3: %T.as_type.as.OrderedWith.impl.Less.type.28a50f.1 = specific_constant imports.%Core.Less.2d9, @T.as_type.as.OrderedWith.impl.df2(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.09733d.1] // CHECK:STDOUT: %Less.ref.loc20: %T.as_type.as.OrderedWith.impl.Less.type.28a50f.1 = name_ref Less, %.loc20_5.3 [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.09733d.1] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.bound.loc20: = bound_method %int_1.loc20, %Less.ref.loc20 [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.bound.069497.2] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.specific_fn.loc20: = specific_function %Less.ref.loc20, @T.as_type.as.OrderedWith.impl.Less.4(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.specific_fn.0beaf8.2] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.Less.specific_fn.loc20: = specific_function %Less.ref.loc20, @T.as_type.as.OrderedWith.impl.Less.6(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.Less.specific_fn.0beaf8.2] // CHECK:STDOUT: %bound_method.loc20_5.3: = bound_method %int_1.loc20, %T.as_type.as.OrderedWith.impl.Less.specific_fn.loc20 [concrete = constants.%bound_method.103f49.2] // CHECK:STDOUT: %impl.elem0.loc20_3: %.ca2 = impl_witness_access constants.%ImplicitAs.impl_witness.660, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] // CHECK:STDOUT: %bound_method.loc20_3: = bound_method %int_1.loc20, %impl.elem0.loc20_3 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] @@ -2405,12 +2405,12 @@ fn CopyUnsignedLongLong() { // CHECK:STDOUT: %.loc21_5.1: %ImplicitAs.type.0ec = converted Core.IntLiteral, %ImplicitAs.facet.loc21_5.1 [concrete = constants.%ImplicitAs.facet.2ed] // CHECK:STDOUT: %ImplicitAs.facet.loc21_5.2: %ImplicitAs.type.0ec = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.660) [concrete = constants.%ImplicitAs.facet.2ed] // CHECK:STDOUT: %.loc21_5.2: %ImplicitAs.type.0ec = converted Core.IntLiteral, %ImplicitAs.facet.loc21_5.2 [concrete = constants.%ImplicitAs.facet.2ed] -// CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem3.loc21, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.3(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.371f57.1] +// CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem3.loc21, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.5(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.371f57.1] // CHECK:STDOUT: %bound_method.loc21_5.2: = bound_method %int_1.loc21, %specific_fn.loc21 [concrete = constants.%bound_method.ffa540.1] // CHECK:STDOUT: %.loc21_5.3: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.09194f.1 = specific_constant imports.%Core.GreaterOrEquivalent.8e2, @T.as_type.as.OrderedWith.impl.df2(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.ae8de7.1] // CHECK:STDOUT: %GreaterOrEquivalent.ref.loc21: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.type.09194f.1 = name_ref GreaterOrEquivalent, %.loc21_5.3 [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.ae8de7.1] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.bound.loc21: = bound_method %int_1.loc21, %GreaterOrEquivalent.ref.loc21 [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.bound.22317d.2] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.loc21: = specific_function %GreaterOrEquivalent.ref.loc21, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.4(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.371f57.2] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.loc21: = specific_function %GreaterOrEquivalent.ref.loc21, @T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.6(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.371f57.2] // CHECK:STDOUT: %bound_method.loc21_5.3: = bound_method %int_1.loc21, %T.as_type.as.OrderedWith.impl.GreaterOrEquivalent.specific_fn.loc21 [concrete = constants.%bound_method.ffa540.2] // CHECK:STDOUT: %impl.elem0.loc21: %.ca2 = impl_witness_access constants.%ImplicitAs.impl_witness.660, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] // CHECK:STDOUT: %bound_method.loc21_3: = bound_method %int_1.loc21, %impl.elem0.loc21 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] @@ -2426,12 +2426,12 @@ fn CopyUnsignedLongLong() { // CHECK:STDOUT: %.loc22_5.1: %ImplicitAs.type.0ec = converted Core.IntLiteral, %ImplicitAs.facet.loc22_5.1 [concrete = constants.%ImplicitAs.facet.2ed] // CHECK:STDOUT: %ImplicitAs.facet.loc22_5.2: %ImplicitAs.type.0ec = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.660) [concrete = constants.%ImplicitAs.facet.2ed] // CHECK:STDOUT: %.loc22_5.2: %ImplicitAs.type.0ec = converted Core.IntLiteral, %ImplicitAs.facet.loc22_5.2 [concrete = constants.%ImplicitAs.facet.2ed] -// CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem1.loc22, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.3(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.05fce2.1] +// CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem1.loc22, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.5(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.05fce2.1] // CHECK:STDOUT: %bound_method.loc22_5.2: = bound_method %int_1.loc22, %specific_fn.loc22 [concrete = constants.%bound_method.83e687.1] // CHECK:STDOUT: %.loc22_5.3: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.1522a4.1 = specific_constant imports.%Core.LessOrEquivalent.d90, @T.as_type.as.OrderedWith.impl.df2(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.b7cd44.1] // CHECK:STDOUT: %LessOrEquivalent.ref.loc22: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.type.1522a4.1 = name_ref LessOrEquivalent, %.loc22_5.3 [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.b7cd44.1] // CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.bound.loc22: = bound_method %int_1.loc22, %LessOrEquivalent.ref.loc22 [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.bound.2eaa72.2] -// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.loc22: = specific_function %LessOrEquivalent.ref.loc22, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.4(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.05fce2.2] +// CHECK:STDOUT: %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.loc22: = specific_function %LessOrEquivalent.ref.loc22, @T.as_type.as.OrderedWith.impl.LessOrEquivalent.6(constants.%ImplicitAs.facet.2ed) [concrete = constants.%T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.05fce2.2] // CHECK:STDOUT: %bound_method.loc22_5.3: = bound_method %int_1.loc22, %T.as_type.as.OrderedWith.impl.LessOrEquivalent.specific_fn.loc22 [concrete = constants.%bound_method.83e687.2] // CHECK:STDOUT: %impl.elem0.loc22: %.ca2 = impl_witness_access constants.%ImplicitAs.impl_witness.660, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3ce] // CHECK:STDOUT: %bound_method.loc22_3: = bound_method %int_1.loc22, %impl.elem0.loc22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.5d7] diff --git a/toolchain/check/testdata/primitives/int_conversions.carbon b/toolchain/check/testdata/primitives/int_conversions.carbon index 14ebd072c7a2..35809b0c26a7 100644 --- a/toolchain/check/testdata/primitives/int_conversions.carbon +++ b/toolchain/check/testdata/primitives/int_conversions.carbon @@ -53,8 +53,23 @@ fn TestFailures() { library "[[@TEST_NAME]]"; fn TestCppCompat() { - var c: i32 = 1; - var unused d: Core.CppCompat.Long32 = c; + var a: i32 = 1; + var unused b: Core.CppCompat.Long32 = a; + + var c: u32 = 1; + var unused d: Core.CppCompat.ULong32 = c; + + var e: Core.CppCompat.Long64 = 1; + var unused f: i64 = e; + + var g: Core.CppCompat.ULong64 = 1; + var unused h: u64 = g; + + var i: i64 = 1; + var unused j: Core.CppCompat.LongLong64 = i; + + var k: u64 = 1; + var unused l: Core.CppCompat.ULongLong64 = k; } // --- fail_todo_cpp_compat_widen.carbon @@ -76,47 +91,75 @@ fn TestCppCompat() { // CHECK:STDERR: var unused b: i33 = a; - var c: Core.CppCompat.LongLong64 = 1; + var c: Core.CppCompat.Long64 = 1; // CHECK:STDERR: fail_todo_cpp_compat_widen.carbon:[[@LINE+11]]:17: error: bit width of integer type literal must be a multiple of 8; use `Core.Int(65)` instead [IntWidthNotMultipleOf8] // CHECK:STDERR: var unused d: i65 = c; // CHECK:STDERR: ^~~ // CHECK:STDERR: - // CHECK:STDERR: fail_todo_cpp_compat_widen.carbon:[[@LINE+7]]:3: error: cannot implicitly convert expression of type `Core.CppCompat.LongLong64` to `i65` [ConversionFailure] + // CHECK:STDERR: fail_todo_cpp_compat_widen.carbon:[[@LINE+7]]:3: error: cannot implicitly convert expression of type `Core.CppCompat.Long64` to `i65` [ConversionFailure] // CHECK:STDERR: var unused d: i65 = c; // CHECK:STDERR: ^~~~~~~~~~~~~~~~~ - // CHECK:STDERR: fail_todo_cpp_compat_widen.carbon:[[@LINE+4]]:3: note: type `Core.CppCompat.LongLong64` does not implement interface `Core.ImplicitAs(i65)` [MissingImplInMemberAccessInContext] + // CHECK:STDERR: fail_todo_cpp_compat_widen.carbon:[[@LINE+4]]:3: note: type `Core.CppCompat.Long64` does not implement interface `Core.ImplicitAs(i65)` [MissingImplInMemberAccessInContext] // CHECK:STDERR: var unused d: i65 = c; // CHECK:STDERR: ^~~~~~~~~~~~~~~~~ // CHECK:STDERR: var unused d: i65 = c; - var e: Core.CppCompat.ULong32 = 1; + var e: Core.CppCompat.LongLong64 = 1; + // CHECK:STDERR: fail_todo_cpp_compat_widen.carbon:[[@LINE+11]]:17: error: bit width of integer type literal must be a multiple of 8; use `Core.Int(65)` instead [IntWidthNotMultipleOf8] + // CHECK:STDERR: var unused f: i65 = e; + // CHECK:STDERR: ^~~ + // CHECK:STDERR: + // CHECK:STDERR: fail_todo_cpp_compat_widen.carbon:[[@LINE+7]]:3: error: cannot implicitly convert expression of type `Core.CppCompat.LongLong64` to `i65` [ConversionFailure] + // CHECK:STDERR: var unused f: i65 = e; + // CHECK:STDERR: ^~~~~~~~~~~~~~~~~ + // CHECK:STDERR: fail_todo_cpp_compat_widen.carbon:[[@LINE+4]]:3: note: type `Core.CppCompat.LongLong64` does not implement interface `Core.ImplicitAs(i65)` [MissingImplInMemberAccessInContext] + // CHECK:STDERR: var unused f: i65 = e; + // CHECK:STDERR: ^~~~~~~~~~~~~~~~~ + // CHECK:STDERR: + var unused f: i65 = e; + + var g: Core.CppCompat.ULong32 = 1; // CHECK:STDERR: fail_todo_cpp_compat_widen.carbon:[[@LINE+11]]:17: error: bit width of integer type literal must be a multiple of 8; use `Core.UInt(33)` instead [IntWidthNotMultipleOf8] - // CHECK:STDERR: var unused f: u33 = e; + // CHECK:STDERR: var unused h: u33 = g; // CHECK:STDERR: ^~~ // CHECK:STDERR: // CHECK:STDERR: fail_todo_cpp_compat_widen.carbon:[[@LINE+7]]:3: error: cannot implicitly convert expression of type `Core.CppCompat.ULong32` to `u33` [ConversionFailure] - // CHECK:STDERR: var unused f: u33 = e; + // CHECK:STDERR: var unused h: u33 = g; // CHECK:STDERR: ^~~~~~~~~~~~~~~~~ // CHECK:STDERR: fail_todo_cpp_compat_widen.carbon:[[@LINE+4]]:3: note: type `Core.CppCompat.ULong32` does not implement interface `Core.ImplicitAs(u33)` [MissingImplInMemberAccessInContext] - // CHECK:STDERR: var unused f: u33 = e; + // CHECK:STDERR: var unused h: u33 = g; // CHECK:STDERR: ^~~~~~~~~~~~~~~~~ // CHECK:STDERR: - var unused f: u33 = e; + var unused h: u33 = g; - var g: Core.CppCompat.ULongLong64 = 1; + var i: Core.CppCompat.ULong64 = 1; // CHECK:STDERR: fail_todo_cpp_compat_widen.carbon:[[@LINE+11]]:17: error: bit width of integer type literal must be a multiple of 8; use `Core.UInt(65)` instead [IntWidthNotMultipleOf8] - // CHECK:STDERR: var unused h: u65 = g; + // CHECK:STDERR: var unused j: u65 = i; + // CHECK:STDERR: ^~~ + // CHECK:STDERR: + // CHECK:STDERR: fail_todo_cpp_compat_widen.carbon:[[@LINE+7]]:3: error: cannot implicitly convert expression of type `Core.CppCompat.ULong64` to `u65` [ConversionFailure] + // CHECK:STDERR: var unused j: u65 = i; + // CHECK:STDERR: ^~~~~~~~~~~~~~~~~ + // CHECK:STDERR: fail_todo_cpp_compat_widen.carbon:[[@LINE+4]]:3: note: type `Core.CppCompat.ULong64` does not implement interface `Core.ImplicitAs(u65)` [MissingImplInMemberAccessInContext] + // CHECK:STDERR: var unused j: u65 = i; + // CHECK:STDERR: ^~~~~~~~~~~~~~~~~ + // CHECK:STDERR: + var unused j: u65 = i; + + var k: Core.CppCompat.ULongLong64 = 1; + // CHECK:STDERR: fail_todo_cpp_compat_widen.carbon:[[@LINE+11]]:17: error: bit width of integer type literal must be a multiple of 8; use `Core.UInt(65)` instead [IntWidthNotMultipleOf8] + // CHECK:STDERR: var unused l: u65 = k; // CHECK:STDERR: ^~~ // CHECK:STDERR: // CHECK:STDERR: fail_todo_cpp_compat_widen.carbon:[[@LINE+7]]:3: error: cannot implicitly convert expression of type `Core.CppCompat.ULongLong64` to `u65` [ConversionFailure] - // CHECK:STDERR: var unused h: u65 = g; + // CHECK:STDERR: var unused l: u65 = k; // CHECK:STDERR: ^~~~~~~~~~~~~~~~~ // CHECK:STDERR: fail_todo_cpp_compat_widen.carbon:[[@LINE+4]]:3: note: type `Core.CppCompat.ULongLong64` does not implement interface `Core.ImplicitAs(u65)` [MissingImplInMemberAccessInContext] - // CHECK:STDERR: var unused h: u65 = g; + // CHECK:STDERR: var unused l: u65 = k; // CHECK:STDERR: ^~~~~~~~~~~~~~~~~ // CHECK:STDERR: - var unused h: u65 = g; + var unused l: u65 = k; } // --- fail_cpp_compat_narrow.carbon @@ -135,38 +178,60 @@ fn TestCppCompat() { // CHECK:STDERR: var unused b: i32 = a; + // i64 is slightly wider than Long64. + var c: i64 = 1; + // CHECK:STDERR: fail_cpp_compat_narrow.carbon:[[@LINE+7]]:3: error: cannot implicitly convert expression of type `i64` to `Core.CppCompat.Long64` [ConversionFailure] + // CHECK:STDERR: var unused d: Core.CppCompat.Long64 = c; + // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // CHECK:STDERR: fail_cpp_compat_narrow.carbon:[[@LINE+4]]:3: note: type `i64` does not implement interface `Core.ImplicitAs(Core.CppCompat.Long64)` [MissingImplInMemberAccessInContext] + // CHECK:STDERR: var unused d: Core.CppCompat.Long64 = c; + // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // CHECK:STDERR: + var unused d: Core.CppCompat.Long64 = c; + // LongLong64 is slightly wider than i64. - var c: Core.CppCompat.LongLong64 = 1; + var e: Core.CppCompat.LongLong64 = 1; // CHECK:STDERR: fail_cpp_compat_narrow.carbon:[[@LINE+7]]:3: error: cannot implicitly convert expression of type `Core.CppCompat.LongLong64` to `i64` [ConversionFailure] - // CHECK:STDERR: var unused d: i64 = c; + // CHECK:STDERR: var unused f: i64 = e; // CHECK:STDERR: ^~~~~~~~~~~~~~~~~ // CHECK:STDERR: fail_cpp_compat_narrow.carbon:[[@LINE+4]]:3: note: type `Core.CppCompat.LongLong64` does not implement interface `Core.ImplicitAs(i64)` [MissingImplInMemberAccessInContext] - // CHECK:STDERR: var unused d: i64 = c; + // CHECK:STDERR: var unused f: i64 = e; // CHECK:STDERR: ^~~~~~~~~~~~~~~~~ // CHECK:STDERR: - var unused d: i64 = c; + var unused f: i64 = e; // ULong32 is slightly wider than u32. - var e: Core.CppCompat.ULong32 = 1; + var g: Core.CppCompat.ULong32 = 1; // CHECK:STDERR: fail_cpp_compat_narrow.carbon:[[@LINE+7]]:3: error: cannot implicitly convert expression of type `Core.CppCompat.ULong32` to `u32` [ConversionFailure] - // CHECK:STDERR: var unused f: u32 = e; + // CHECK:STDERR: var unused h: u32 = g; // CHECK:STDERR: ^~~~~~~~~~~~~~~~~ // CHECK:STDERR: fail_cpp_compat_narrow.carbon:[[@LINE+4]]:3: note: type `Core.CppCompat.ULong32` does not implement interface `Core.ImplicitAs(u32)` [MissingImplInMemberAccessInContext] - // CHECK:STDERR: var unused f: u32 = e; + // CHECK:STDERR: var unused h: u32 = g; // CHECK:STDERR: ^~~~~~~~~~~~~~~~~ // CHECK:STDERR: - var unused f: u32 = e; + var unused h: u32 = g; + + // u64 is slightly wider than ULong64. + var i: u64 = 1; + // CHECK:STDERR: fail_cpp_compat_narrow.carbon:[[@LINE+7]]:3: error: cannot implicitly convert expression of type `u64` to `Core.CppCompat.ULong64` [ConversionFailure] + // CHECK:STDERR: var unused j: Core.CppCompat.ULong64 = i; + // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // CHECK:STDERR: fail_cpp_compat_narrow.carbon:[[@LINE+4]]:3: note: type `u64` does not implement interface `Core.ImplicitAs(Core.CppCompat.ULong64)` [MissingImplInMemberAccessInContext] + // CHECK:STDERR: var unused j: Core.CppCompat.ULong64 = i; + // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // CHECK:STDERR: + var unused j: Core.CppCompat.ULong64 = i; // ULongLong64 is slightly wider than u64. - var g: Core.CppCompat.ULongLong64 = 1; + var k: Core.CppCompat.ULongLong64 = 1; // CHECK:STDERR: fail_cpp_compat_narrow.carbon:[[@LINE+7]]:3: error: cannot implicitly convert expression of type `Core.CppCompat.ULongLong64` to `u64` [ConversionFailure] - // CHECK:STDERR: var unused h: u64 = g; + // CHECK:STDERR: var unused l: u64 = k; // CHECK:STDERR: ^~~~~~~~~~~~~~~~~ // CHECK:STDERR: fail_cpp_compat_narrow.carbon:[[@LINE+4]]:3: note: type `Core.CppCompat.ULongLong64` does not implement interface `Core.ImplicitAs(u64)` [MissingImplInMemberAccessInContext] - // CHECK:STDERR: var unused h: u64 = g; + // CHECK:STDERR: var unused l: u64 = k; // CHECK:STDERR: ^~~~~~~~~~~~~~~~~ // CHECK:STDERR: - var unused h: u64 = g; + var unused l: u64 = k; } // --- widen_sign_change.carbon diff --git a/toolchain/lower/testdata/interop/cpp/cpp_compat_int.carbon b/toolchain/lower/testdata/interop/cpp/cpp_compat_int.carbon index 3581c6e7a018..bfaa6a60cd0c 100644 --- a/toolchain/lower/testdata/interop/cpp/cpp_compat_int.carbon +++ b/toolchain/lower/testdata/interop/cpp/cpp_compat_int.carbon @@ -26,6 +26,18 @@ fn DoubleULong32(ul32: Core.CppCompat.ULong32) -> u32 { return 2 * (ul32 as u32); } +// TODO: Return `Core.CppCompat.Long64` when it's copyable. +fn DoubleLong64(l64: Core.CppCompat.Long64) -> i64 { + // TODO: Avoid explicit conversion when multiplication on `Long64` is available. + return 2 * (l64 as i64); +} + +// TODO: Return `Core.CppCompat.ULong64` when it's copyable. +fn DoubleULong64(ul64: Core.CppCompat.ULong64) -> u64 { + // TODO: Avoid explicit conversion when multiplication on `ULong64` is available. + return 2 * (ul64 as u64); +} + // TODO: Return `Core.CppCompat.LongLong64` when it's copyable. fn DoubleLongLong64(ll64: Core.CppCompat.LongLong64) -> i64 { // TODO: Avoid explicit conversion when multiplication on `LongLong64` is available. @@ -33,9 +45,9 @@ fn DoubleLongLong64(ll64: Core.CppCompat.LongLong64) -> i64 { } // TODO: Return `Core.CppCompat.ULongLong64` when it's copyable. -fn DoubleULong64(ul64: Core.CppCompat.ULongLong64) -> u64 { +fn DoubleULongLong64(ull64: Core.CppCompat.ULongLong64) -> u64 { // TODO: Avoid explicit conversion when multiplication on `ULongLong64` is available. - return 2 * (ul64 as u64); + return 2 * (ull64 as u64); } // CHECK:STDOUT: ; --- @@ -57,9 +69,9 @@ fn DoubleULong64(ul64: Core.CppCompat.ULongLong64) -> u64 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define i64 @_CDoubleLongLong64.Main(i64 %ll64) #0 !dbg !20 { +// CHECK:STDOUT: define i64 @_CDoubleLong64.Main(i64 %l64) #0 !dbg !20 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %T.as_type.as.MulWith.impl.Op.call = mul i64 2, %ll64, !dbg !26 +// CHECK:STDOUT: %T.as_type.as.MulWith.impl.Op.call = mul i64 2, %l64, !dbg !26 // CHECK:STDOUT: ret i64 %T.as_type.as.MulWith.impl.Op.call, !dbg !27 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -70,6 +82,20 @@ fn DoubleULong64(ul64: Core.CppCompat.ULongLong64) -> u64 { // CHECK:STDOUT: ret i64 %T.as_type.as.MulWith.impl.Op.call, !dbg !35 // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: ; Function Attrs: nounwind +// CHECK:STDOUT: define i64 @_CDoubleLongLong64.Main(i64 %ll64) #0 !dbg !36 { +// CHECK:STDOUT: entry: +// CHECK:STDOUT: %T.as_type.as.MulWith.impl.Op.call = mul i64 2, %ll64, !dbg !39 +// CHECK:STDOUT: ret i64 %T.as_type.as.MulWith.impl.Op.call, !dbg !40 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: ; Function Attrs: nounwind +// CHECK:STDOUT: define i64 @_CDoubleULongLong64.Main(i64 %ull64) #0 !dbg !41 { +// CHECK:STDOUT: entry: +// CHECK:STDOUT: %T.as_type.as.MulWith.impl.Op.call = mul i64 2, %ull64, !dbg !44 +// CHECK:STDOUT: ret i64 %T.as_type.as.MulWith.impl.Op.call, !dbg !45 +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: attributes #0 = { nounwind } // CHECK:STDOUT: // CHECK:STDOUT: !llvm.dbg.cu = !{!0} @@ -95,7 +121,7 @@ fn DoubleULong64(ul64: Core.CppCompat.ULongLong64) -> u64 { // CHECK:STDOUT: !17 = !DILocalVariable(arg: 1, scope: !12, type: !15) // CHECK:STDOUT: !18 = !DILocation(line: 13, column: 10, scope: !12) // CHECK:STDOUT: !19 = !DILocation(line: 13, column: 3, scope: !12) -// CHECK:STDOUT: !20 = distinct !DISubprogram(name: "DoubleLongLong64", linkageName: "_CDoubleLongLong64.Main", scope: null, file: !1, line: 17, type: !21, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !24) +// CHECK:STDOUT: !20 = distinct !DISubprogram(name: "DoubleLong64", linkageName: "_CDoubleLong64.Main", scope: null, file: !1, line: 17, type: !21, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !24) // CHECK:STDOUT: !21 = !DISubroutineType(types: !22) // CHECK:STDOUT: !22 = !{!23, !23} // CHECK:STDOUT: !23 = !DIBasicType(name: "int", size: 64, encoding: DW_ATE_signed) @@ -111,4 +137,14 @@ fn DoubleULong64(ul64: Core.CppCompat.ULongLong64) -> u64 { // CHECK:STDOUT: !33 = !DILocalVariable(arg: 1, scope: !28, type: !31) // CHECK:STDOUT: !34 = !DILocation(line: 25, column: 10, scope: !28) // CHECK:STDOUT: !35 = !DILocation(line: 25, column: 3, scope: !28) +// CHECK:STDOUT: !36 = distinct !DISubprogram(name: "DoubleLongLong64", linkageName: "_CDoubleLongLong64.Main", scope: null, file: !1, line: 29, type: !21, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !37) +// CHECK:STDOUT: !37 = !{!38} +// CHECK:STDOUT: !38 = !DILocalVariable(arg: 1, scope: !36, type: !23) +// CHECK:STDOUT: !39 = !DILocation(line: 31, column: 10, scope: !36) +// CHECK:STDOUT: !40 = !DILocation(line: 31, column: 3, scope: !36) +// CHECK:STDOUT: !41 = distinct !DISubprogram(name: "DoubleULongLong64", linkageName: "_CDoubleULongLong64.Main", scope: null, file: !1, line: 35, type: !29, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !42) +// CHECK:STDOUT: !42 = !{!43} +// CHECK:STDOUT: !43 = !DILocalVariable(arg: 1, scope: !41, type: !31) +// CHECK:STDOUT: !44 = !DILocation(line: 37, column: 10, scope: !41) +// CHECK:STDOUT: !45 = !DILocation(line: 37, column: 3, scope: !41) // CHECK:STDOUT: diff --git a/toolchain/sem_ir/type_info.cpp b/toolchain/sem_ir/type_info.cpp index 064f8ad7468f..802fee568eb9 100644 --- a/toolchain/sem_ir/type_info.cpp +++ b/toolchain/sem_ir/type_info.cpp @@ -198,7 +198,9 @@ auto RecognizedTypeInfo::ForType(const File& file, ClassType class_type) if (parent_name_ident == "CppCompat") { Kind kind = llvm::StringSwitch(*name_ident) .Case("Long32", CppLong32) + .Case("Long64", CppLong64) .Case("ULong32", CppULong32) + .Case("ULong64", CppULong64) .Case("LongLong64", CppLongLong64) .Case("ULongLong64", CppULongLong64) .Case("NullptrT", CppNullptrT) @@ -244,9 +246,15 @@ auto RecognizedTypeInfo::PrintLiteral(const File& file, case CppLong32: return PrintCppCompatLiteral(file, &clang::ASTContext::LongTy, 32, "long", out); + case CppLong64: + return PrintCppCompatLiteral(file, &clang::ASTContext::LongTy, 64, "long", + out); case CppULong32: return PrintCppCompatLiteral(file, &clang::ASTContext::UnsignedLongTy, 32, "unsigned_long", out); + case CppULong64: + return PrintCppCompatLiteral(file, &clang::ASTContext::UnsignedLongTy, 64, + "unsigned_long", out); case CppLongLong64: return PrintCppCompatLiteral(file, &clang::ASTContext::LongLongTy, 64, "long_long", out); diff --git a/toolchain/sem_ir/type_info.h b/toolchain/sem_ir/type_info.h index a77a7cef0cbb..13373aadf97b 100644 --- a/toolchain/sem_ir/type_info.h +++ b/toolchain/sem_ir/type_info.h @@ -357,14 +357,20 @@ struct RecognizedTypeInfo { Char, // `Core.CppCompat.Long32` which is `Cpp.long` when `long` is 32 bits. CppLong32, + // `Core.CppCompat.Long64` which is `Cpp.long` when `long` is 64 bits but + // `int64_t` is `long long`. + CppLong64, // `Core.CppCompat.ULong32` which is `Cpp.unsigned_long` when `unsigned // long` is 32 bits. CppULong32, - // `Core.CppCompat.LongLong64` which is `Cpp.long_long` when `long` is 64 - // bits. + // `Core.CppCompat.ULong64` which is `Cpp.unsigned_long` when `unsigned + // long` is 64 bits but `uint64_t` is `unsigned long long`. + CppULong64, + // `Core.CppCompat.LongLong64` which is `Cpp.long_long` when `long` is + // `int64_t`. CppLongLong64, // `Core.CppCompat.ULongLong64` which is `Cpp.unsigned_long_long` when - // `unsigned long` is 64 bits. + // `unsigned long` is `uint64_t`. CppULongLong64, // `Cpp.nullptr_t` / `Core.CppCompat.NullptrT`. CppNullptrT,