|
|
@@ -120,57 +120,58 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
|
|
|
// CHECK:STDOUT: --- fail_base_bad_type.carbon
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: constants {
|
|
|
-// CHECK:STDOUT: %.loc7_18.1: type = struct_type {}
|
|
|
-// CHECK:STDOUT: %.loc10: type = struct_type {.a: i32}
|
|
|
-// CHECK:STDOUT: %.loc17: type = struct_type {.base: <error>}
|
|
|
-// CHECK:STDOUT: %.loc12: type = ptr_type {.base: <error>}
|
|
|
-// CHECK:STDOUT: %.loc51_22: type = tuple_type (type)
|
|
|
-// CHECK:STDOUT: %.loc51_23.1: type = tuple_type (Base)
|
|
|
-// CHECK:STDOUT: %.loc7_18.2: type = tuple_type ()
|
|
|
-// CHECK:STDOUT: %.loc7_17: type = ptr_type {}
|
|
|
-// CHECK:STDOUT: %.loc51_23.2: type = tuple_type ({}*)
|
|
|
-// CHECK:STDOUT: %.loc67: type = ptr_type {.a: i32, .b: i32}
|
|
|
-// CHECK:STDOUT: %.loc8: type = ptr_type {.a: i32}
|
|
|
-// CHECK:STDOUT: %.loc102_1.1: type = struct_type {.base: Final}
|
|
|
-// CHECK:STDOUT: %.loc102_1.2: type = struct_type {.base: {.a: i32}*}
|
|
|
-// CHECK:STDOUT: %.loc97: type = ptr_type {.base: Final}
|
|
|
+// CHECK:STDOUT: %.loc7_18.1: type = struct_type {}, const
|
|
|
+// CHECK:STDOUT: %.loc10: type = struct_type {.a: i32}, const
|
|
|
+// CHECK:STDOUT: %.loc17: type = struct_type {.base: <error>}, const
|
|
|
+// CHECK:STDOUT: %.loc12: type = ptr_type {.base: <error>}, const
|
|
|
+// CHECK:STDOUT: %.loc26: i32 = int_literal 32, const
|
|
|
+// CHECK:STDOUT: %.loc51_22: type = tuple_type (type), const
|
|
|
+// CHECK:STDOUT: %.loc51_23.1: type = tuple_type (Base), const
|
|
|
+// CHECK:STDOUT: %.loc7_18.2: type = tuple_type (), const
|
|
|
+// CHECK:STDOUT: %.loc7_17: type = ptr_type {}, const
|
|
|
+// CHECK:STDOUT: %.loc51_23.2: type = tuple_type ({}*), const
|
|
|
+// CHECK:STDOUT: %.loc67: type = ptr_type {.a: i32, .b: i32}, const
|
|
|
+// CHECK:STDOUT: %.loc8: type = ptr_type {.a: i32}, const
|
|
|
+// CHECK:STDOUT: %.loc102_1.1: type = struct_type {.base: Final}, const
|
|
|
+// CHECK:STDOUT: %.loc102_1.2: type = struct_type {.base: {.a: i32}*}, const
|
|
|
+// CHECK:STDOUT: %.loc97: type = ptr_type {.base: Final}, const
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: file {
|
|
|
// CHECK:STDOUT: package: <namespace> = namespace package, {.Base = %Base.decl, .Final = %Final.decl, .DeriveFromError = %DeriveFromError.decl, .AccessMemberWithInvalidBaseError = %AccessMemberWithInvalidBaseError, .DeriveFromNonType = %DeriveFromNonType.decl, .AccessMemberWithInvalidBasNonType = %AccessMemberWithInvalidBasNonType, .DeriveFromi32 = %DeriveFromi32.decl, .ConvertToBadBasei32 = %ConvertToBadBasei32, .AccessMemberWithInvalidBasei32 = %AccessMemberWithInvalidBasei32, .DeriveFromTuple = %DeriveFromTuple.decl, .ConvertToBadBaseTuple = %ConvertToBadBaseTuple, .AccessMemberWithInvalidBaseTuple = %AccessMemberWithInvalidBaseTuple, .DeriveFromStruct = %DeriveFromStruct.decl, .ConvertToBadBaseStruct = %ConvertToBadBaseStruct, .AccessMemberWithInvalidBaseStruct = %AccessMemberWithInvalidBaseStruct, .Incomplete = %Incomplete.decl, .DeriveFromIncomplete = %DeriveFromIncomplete.decl, .ConvertToBadBaseIncomplete = %ConvertToBadBaseIncomplete, .AccessMemberWithInvalidBaseIncomplete = %AccessMemberWithInvalidBaseIncomplete, .DeriveFromFinal = %DeriveFromFinal.decl, .ConvertToBadBaseFinal = %ConvertToBadBaseFinal, .AccessMemberWithInvalidBaseFinal_WithMember = %AccessMemberWithInvalidBaseFinal_WithMember, .AccessMemberWithInvalidBaseFinal_NoMember = %AccessMemberWithInvalidBaseFinal_NoMember}
|
|
|
// CHECK:STDOUT: %Base.decl = class_decl @Base, ()
|
|
|
-// CHECK:STDOUT: %Base: type = class_type @Base
|
|
|
+// CHECK:STDOUT: %Base: type = class_type @Base, const
|
|
|
// CHECK:STDOUT: %Final.decl = class_decl @Final, ()
|
|
|
-// CHECK:STDOUT: %Final: type = class_type @Final
|
|
|
+// CHECK:STDOUT: %Final: type = class_type @Final, const
|
|
|
// CHECK:STDOUT: %DeriveFromError.decl = class_decl @DeriveFromError, ()
|
|
|
-// CHECK:STDOUT: %DeriveFromError: type = class_type @DeriveFromError
|
|
|
-// CHECK:STDOUT: %AccessMemberWithInvalidBaseError: <function> = fn_decl @AccessMemberWithInvalidBaseError
|
|
|
+// CHECK:STDOUT: %DeriveFromError: type = class_type @DeriveFromError, const
|
|
|
+// CHECK:STDOUT: %AccessMemberWithInvalidBaseError: <function> = fn_decl @AccessMemberWithInvalidBaseError, const
|
|
|
// CHECK:STDOUT: %DeriveFromNonType.decl = class_decl @DeriveFromNonType, ()
|
|
|
-// CHECK:STDOUT: %DeriveFromNonType: type = class_type @DeriveFromNonType
|
|
|
-// CHECK:STDOUT: %AccessMemberWithInvalidBasNonType: <function> = fn_decl @AccessMemberWithInvalidBasNonType
|
|
|
+// CHECK:STDOUT: %DeriveFromNonType: type = class_type @DeriveFromNonType, const
|
|
|
+// CHECK:STDOUT: %AccessMemberWithInvalidBasNonType: <function> = fn_decl @AccessMemberWithInvalidBasNonType, const
|
|
|
// CHECK:STDOUT: %DeriveFromi32.decl = class_decl @DeriveFromi32, ()
|
|
|
-// CHECK:STDOUT: %DeriveFromi32: type = class_type @DeriveFromi32
|
|
|
-// CHECK:STDOUT: %ConvertToBadBasei32: <function> = fn_decl @ConvertToBadBasei32
|
|
|
-// CHECK:STDOUT: %AccessMemberWithInvalidBasei32: <function> = fn_decl @AccessMemberWithInvalidBasei32
|
|
|
+// CHECK:STDOUT: %DeriveFromi32: type = class_type @DeriveFromi32, const
|
|
|
+// CHECK:STDOUT: %ConvertToBadBasei32: <function> = fn_decl @ConvertToBadBasei32, const
|
|
|
+// CHECK:STDOUT: %AccessMemberWithInvalidBasei32: <function> = fn_decl @AccessMemberWithInvalidBasei32, const
|
|
|
// CHECK:STDOUT: %DeriveFromTuple.decl = class_decl @DeriveFromTuple, ()
|
|
|
-// CHECK:STDOUT: %DeriveFromTuple: type = class_type @DeriveFromTuple
|
|
|
-// CHECK:STDOUT: %ConvertToBadBaseTuple: <function> = fn_decl @ConvertToBadBaseTuple
|
|
|
-// CHECK:STDOUT: %AccessMemberWithInvalidBaseTuple: <function> = fn_decl @AccessMemberWithInvalidBaseTuple
|
|
|
+// CHECK:STDOUT: %DeriveFromTuple: type = class_type @DeriveFromTuple, const
|
|
|
+// CHECK:STDOUT: %ConvertToBadBaseTuple: <function> = fn_decl @ConvertToBadBaseTuple, const
|
|
|
+// CHECK:STDOUT: %AccessMemberWithInvalidBaseTuple: <function> = fn_decl @AccessMemberWithInvalidBaseTuple, const
|
|
|
// CHECK:STDOUT: %DeriveFromStruct.decl = class_decl @DeriveFromStruct, ()
|
|
|
-// CHECK:STDOUT: %DeriveFromStruct: type = class_type @DeriveFromStruct
|
|
|
-// CHECK:STDOUT: %ConvertToBadBaseStruct: <function> = fn_decl @ConvertToBadBaseStruct
|
|
|
-// CHECK:STDOUT: %AccessMemberWithInvalidBaseStruct: <function> = fn_decl @AccessMemberWithInvalidBaseStruct
|
|
|
+// CHECK:STDOUT: %DeriveFromStruct: type = class_type @DeriveFromStruct, const
|
|
|
+// CHECK:STDOUT: %ConvertToBadBaseStruct: <function> = fn_decl @ConvertToBadBaseStruct, const
|
|
|
+// CHECK:STDOUT: %AccessMemberWithInvalidBaseStruct: <function> = fn_decl @AccessMemberWithInvalidBaseStruct, const
|
|
|
// CHECK:STDOUT: %Incomplete.decl = class_decl @Incomplete, ()
|
|
|
-// CHECK:STDOUT: %Incomplete: type = class_type @Incomplete
|
|
|
+// CHECK:STDOUT: %Incomplete: type = class_type @Incomplete, const
|
|
|
// CHECK:STDOUT: %DeriveFromIncomplete.decl = class_decl @DeriveFromIncomplete, ()
|
|
|
-// CHECK:STDOUT: %DeriveFromIncomplete: type = class_type @DeriveFromIncomplete
|
|
|
-// CHECK:STDOUT: %ConvertToBadBaseIncomplete: <function> = fn_decl @ConvertToBadBaseIncomplete
|
|
|
-// CHECK:STDOUT: %AccessMemberWithInvalidBaseIncomplete: <function> = fn_decl @AccessMemberWithInvalidBaseIncomplete
|
|
|
+// CHECK:STDOUT: %DeriveFromIncomplete: type = class_type @DeriveFromIncomplete, const
|
|
|
+// CHECK:STDOUT: %ConvertToBadBaseIncomplete: <function> = fn_decl @ConvertToBadBaseIncomplete, const
|
|
|
+// CHECK:STDOUT: %AccessMemberWithInvalidBaseIncomplete: <function> = fn_decl @AccessMemberWithInvalidBaseIncomplete, const
|
|
|
// CHECK:STDOUT: %DeriveFromFinal.decl = class_decl @DeriveFromFinal, ()
|
|
|
-// CHECK:STDOUT: %DeriveFromFinal: type = class_type @DeriveFromFinal
|
|
|
-// CHECK:STDOUT: %ConvertToBadBaseFinal: <function> = fn_decl @ConvertToBadBaseFinal
|
|
|
-// CHECK:STDOUT: %AccessMemberWithInvalidBaseFinal_WithMember: <function> = fn_decl @AccessMemberWithInvalidBaseFinal_WithMember
|
|
|
-// CHECK:STDOUT: %AccessMemberWithInvalidBaseFinal_NoMember: <function> = fn_decl @AccessMemberWithInvalidBaseFinal_NoMember
|
|
|
+// CHECK:STDOUT: %DeriveFromFinal: type = class_type @DeriveFromFinal, const
|
|
|
+// CHECK:STDOUT: %ConvertToBadBaseFinal: <function> = fn_decl @ConvertToBadBaseFinal, const
|
|
|
+// CHECK:STDOUT: %AccessMemberWithInvalidBaseFinal_WithMember: <function> = fn_decl @AccessMemberWithInvalidBaseFinal_WithMember, const
|
|
|
+// CHECK:STDOUT: %AccessMemberWithInvalidBaseFinal_NoMember: <function> = fn_decl @AccessMemberWithInvalidBaseFinal_NoMember, const
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: class @Base {
|
|
|
@@ -179,9 +180,9 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: class @Final {
|
|
|
-// CHECK:STDOUT: %.loc9_8.1: type = unbound_element_type Final, i32
|
|
|
-// CHECK:STDOUT: %.loc9_8.2: <unbound element of class Final> = field_decl a, element0
|
|
|
-// CHECK:STDOUT: %a: <unbound element of class Final> = bind_name a, %.loc9_8.2
|
|
|
+// CHECK:STDOUT: %.loc9_8.1: type = unbound_element_type Final, i32, const
|
|
|
+// CHECK:STDOUT: %.loc9_8.2: <unbound element of class Final> = field_decl a, element0, const
|
|
|
+// CHECK:STDOUT: %a: <unbound element of class Final> = bind_name a, %.loc9_8.2, const = %.loc9_8.2
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .a = %a
|
|
|
@@ -189,8 +190,8 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: class @DeriveFromError {
|
|
|
// CHECK:STDOUT: %error.ref: <error> = name_ref error, <error>
|
|
|
-// CHECK:STDOUT: %.loc16_21.1: type = unbound_element_type DeriveFromError, <error>
|
|
|
-// CHECK:STDOUT: %.loc16_21.2: <unbound element of class DeriveFromError> = base_decl <error>, element0
|
|
|
+// CHECK:STDOUT: %.loc16_21.1: type = unbound_element_type DeriveFromError, <error>, const
|
|
|
+// CHECK:STDOUT: %.loc16_21.2: <unbound element of class DeriveFromError> = base_decl <error>, element0, const
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .base = %.loc16_21.2
|
|
|
@@ -198,9 +199,9 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: class @DeriveFromNonType {
|
|
|
-// CHECK:STDOUT: %.loc26_16: i32 = int_literal 32
|
|
|
-// CHECK:STDOUT: %.loc26_18.1: type = unbound_element_type DeriveFromNonType, <error>
|
|
|
-// CHECK:STDOUT: %.loc26_18.2: <unbound element of class DeriveFromNonType> = base_decl <error>, element0
|
|
|
+// CHECK:STDOUT: %.loc26_16: i32 = int_literal 32, const = constants.%.loc26
|
|
|
+// CHECK:STDOUT: %.loc26_18.1: type = unbound_element_type DeriveFromNonType, <error>, const
|
|
|
+// CHECK:STDOUT: %.loc26_18.2: <unbound element of class DeriveFromNonType> = base_decl <error>, element0, const
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .base = %.loc26_18.2
|
|
|
@@ -208,8 +209,8 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: class @DeriveFromi32 {
|
|
|
-// CHECK:STDOUT: %.loc35_19.1: type = unbound_element_type DeriveFromi32, <error>
|
|
|
-// CHECK:STDOUT: %.loc35_19.2: <unbound element of class DeriveFromi32> = base_decl <error>, element0
|
|
|
+// CHECK:STDOUT: %.loc35_19.1: type = unbound_element_type DeriveFromi32, <error>, const
|
|
|
+// CHECK:STDOUT: %.loc35_19.2: <unbound element of class DeriveFromi32> = base_decl <error>, element0, const
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .base = %.loc35_19.2
|
|
|
@@ -217,11 +218,11 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: class @DeriveFromTuple {
|
|
|
-// CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base
|
|
|
+// CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base, const = file.%Base
|
|
|
// CHECK:STDOUT: %.loc51_22: (type,) = tuple_literal (%Base.ref)
|
|
|
// CHECK:STDOUT: %.loc51_23.1: type = converted %.loc51_22, constants.%.loc51_23.1
|
|
|
-// CHECK:STDOUT: %.loc51_23.2: type = unbound_element_type DeriveFromTuple, <error>
|
|
|
-// CHECK:STDOUT: %.loc51_23.3: <unbound element of class DeriveFromTuple> = base_decl <error>, element0
|
|
|
+// CHECK:STDOUT: %.loc51_23.2: type = unbound_element_type DeriveFromTuple, <error>, const
|
|
|
+// CHECK:STDOUT: %.loc51_23.3: <unbound element of class DeriveFromTuple> = base_decl <error>, element0, const
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .base = %.loc51_23.3
|
|
|
@@ -229,9 +230,9 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: class @DeriveFromStruct {
|
|
|
-// CHECK:STDOUT: %.loc67_33: type = struct_type {.a: i32, .b: i32}
|
|
|
-// CHECK:STDOUT: %.loc67_34.1: type = unbound_element_type DeriveFromStruct, <error>
|
|
|
-// CHECK:STDOUT: %.loc67_34.2: <unbound element of class DeriveFromStruct> = base_decl <error>, element0
|
|
|
+// CHECK:STDOUT: %.loc67_33: type = struct_type {.a: i32, .b: i32}, const
|
|
|
+// CHECK:STDOUT: %.loc67_34.1: type = unbound_element_type DeriveFromStruct, <error>, const
|
|
|
+// CHECK:STDOUT: %.loc67_34.2: <unbound element of class DeriveFromStruct> = base_decl <error>, element0, const
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .base = %.loc67_34.2
|
|
|
@@ -241,9 +242,9 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
|
|
|
// CHECK:STDOUT: class @Incomplete;
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: class @DeriveFromIncomplete {
|
|
|
-// CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, file.%Incomplete
|
|
|
-// CHECK:STDOUT: %.loc87_26.1: type = unbound_element_type DeriveFromIncomplete, <error>
|
|
|
-// CHECK:STDOUT: %.loc87_26.2: <unbound element of class DeriveFromIncomplete> = base_decl <error>, element0
|
|
|
+// CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, file.%Incomplete, const = file.%Incomplete
|
|
|
+// CHECK:STDOUT: %.loc87_26.1: type = unbound_element_type DeriveFromIncomplete, <error>, const
|
|
|
+// CHECK:STDOUT: %.loc87_26.2: <unbound element of class DeriveFromIncomplete> = base_decl <error>, element0, const
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .base = %.loc87_26.2
|
|
|
@@ -251,9 +252,9 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: class @DeriveFromFinal {
|
|
|
-// CHECK:STDOUT: %Final.ref: type = name_ref Final, file.%Final
|
|
|
-// CHECK:STDOUT: %.loc101_21.1: type = unbound_element_type DeriveFromFinal, Final
|
|
|
-// CHECK:STDOUT: %.loc101_21.2: <unbound element of class DeriveFromFinal> = base_decl Final, element0
|
|
|
+// CHECK:STDOUT: %Final.ref: type = name_ref Final, file.%Final, const = file.%Final
|
|
|
+// CHECK:STDOUT: %.loc101_21.1: type = unbound_element_type DeriveFromFinal, Final, const
|
|
|
+// CHECK:STDOUT: %.loc101_21.2: <unbound element of class DeriveFromFinal> = base_decl Final, element0, const
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .base = %.loc101_21.2
|