|
10 | 10 | // TIP: To dump output, run:
|
11 | 11 | // TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/base.carbon
|
12 | 12 |
|
13 |
| -// TODO: Tests marked as `fail_todo_5891_` to fixed as a follow-up of https://github.com/carbon-language/carbon-lang/pull/5891. |
14 |
| - |
15 | 13 | // --- derived_to_base_conversion.h
|
16 | 14 |
|
17 | 15 | class Base {};
|
@@ -103,34 +101,20 @@ struct Derived : Base {
|
103 | 101 | void g() const;
|
104 | 102 | };
|
105 | 103 |
|
106 |
| -// --- fail_todo_5891_use_base_method.carbon |
| 104 | +// --- use_base_method.carbon |
107 | 105 |
|
108 | 106 | library "[[@TEST_NAME]]";
|
109 | 107 |
|
110 | 108 | import Cpp library "base_method.h";
|
111 | 109 |
|
112 | 110 | fn CallDirect(d: Cpp.Derived) {
|
113 | 111 | //@dump-sem-ir-begin
|
114 |
| - // CHECK:STDERR: fail_todo_5891_use_base_method.carbon:[[@LINE+5]]:3: error: missing object argument in method call [MissingObjectInMethodCall] |
115 |
| - // CHECK:STDERR: d.f(); |
116 |
| - // CHECK:STDERR: ^~~~~ |
117 |
| - // CHECK:STDERR: fail_todo_5891_use_base_method.carbon: note: calling function declared here [InCallToFunction] |
118 |
| - // CHECK:STDERR: |
119 | 112 | d.f();
|
120 | 113 | //@dump-sem-ir-end
|
121 | 114 | }
|
122 | 115 |
|
123 | 116 | fn CallQualified(d: Cpp.Derived) {
|
124 | 117 | //@dump-sem-ir-begin
|
125 |
| - // CHECK:STDERR: fail_todo_5891_use_base_method.carbon:[[@LINE+9]]:3: error: member name of type `<type of Cpp.g>` in compound member access is not an instance member or an interface member [CompoundMemberAccessDoesNotUseBase] |
126 |
| - // CHECK:STDERR: d.(Cpp.Base.g)(); |
127 |
| - // CHECK:STDERR: ^~~~~~~~~~~~~~ |
128 |
| - // CHECK:STDERR: |
129 |
| - // CHECK:STDERR: fail_todo_5891_use_base_method.carbon:[[@LINE+5]]:3: error: missing object argument in method call [MissingObjectInMethodCall] |
130 |
| - // CHECK:STDERR: d.(Cpp.Base.g)(); |
131 |
| - // CHECK:STDERR: ^~~~~~~~~~~~~~~~ |
132 |
| - // CHECK:STDERR: fail_todo_5891_use_base_method.carbon: note: calling function declared here [InCallToFunction] |
133 |
| - // CHECK:STDERR: |
134 | 118 | d.(Cpp.Base.g)();
|
135 | 119 | //@dump-sem-ir-end
|
136 | 120 | }
|
@@ -472,7 +456,7 @@ class V {
|
472 | 456 | // CHECK:STDOUT: return %Int.as.Copy.impl.Op.call to %return
|
473 | 457 | // CHECK:STDOUT: }
|
474 | 458 | // CHECK:STDOUT:
|
475 |
| -// CHECK:STDOUT: --- fail_todo_5891_use_base_method.carbon |
| 459 | +// CHECK:STDOUT: --- use_base_method.carbon |
476 | 460 | // CHECK:STDOUT:
|
477 | 461 | // CHECK:STDOUT: constants {
|
478 | 462 | // CHECK:STDOUT: %Derived: type = class_type @Derived [concrete]
|
@@ -517,23 +501,33 @@ class V {
|
517 | 501 | // CHECK:STDOUT: !entry:
|
518 | 502 | // CHECK:STDOUT: %d.ref: %Derived = name_ref d, %d
|
519 | 503 | // CHECK:STDOUT: %f.ref: %.5b0 = name_ref f, imports.%.e54 [concrete = constants.%empty_struct.3f3]
|
520 |
| -// CHECK:STDOUT: %addr: %ptr.fb2 = addr_of <error> [concrete = <error>] |
521 |
| -// CHECK:STDOUT: %.loc13_7.1: %ptr.a97 = as_compatible %addr [concrete = <error>] |
522 |
| -// CHECK:STDOUT: %.loc13_7.2: %ptr.a97 = converted %addr, %.loc13_7.1 [concrete = <error>] |
523 |
| -// CHECK:STDOUT: %f__carbon_thunk.call: init %empty_tuple.type = call imports.%f__carbon_thunk.decl(%.loc13_7.2) |
| 504 | +// CHECK:STDOUT: %bound_method: <bound method> = bound_method %d.ref, %f.ref |
| 505 | +// CHECK:STDOUT: %.loc8_3.1: ref %Base = class_element_access %d.ref, element0 |
| 506 | +// CHECK:STDOUT: %.loc8_3.2: ref %Base = converted %d.ref, %.loc8_3.1 |
| 507 | +// CHECK:STDOUT: %.loc8_3.3: %Base = bind_value %.loc8_3.2 |
| 508 | +// CHECK:STDOUT: %.loc8_3.4: ref %Base = value_as_ref %.loc8_3.3 |
| 509 | +// CHECK:STDOUT: %addr: %ptr.fb2 = addr_of %.loc8_3.4 |
| 510 | +// CHECK:STDOUT: %.loc8_7.1: %ptr.a97 = as_compatible %addr |
| 511 | +// CHECK:STDOUT: %.loc8_7.2: %ptr.a97 = converted %addr, %.loc8_7.1 |
| 512 | +// CHECK:STDOUT: %f__carbon_thunk.call: init %empty_tuple.type = call imports.%f__carbon_thunk.decl(%.loc8_7.2) |
524 | 513 | // CHECK:STDOUT: <elided>
|
525 | 514 | // CHECK:STDOUT: }
|
526 | 515 | // CHECK:STDOUT:
|
527 | 516 | // CHECK:STDOUT: fn @CallQualified(%d.param: %Derived) {
|
528 | 517 | // CHECK:STDOUT: !entry:
|
529 | 518 | // CHECK:STDOUT: %d.ref: %Derived = name_ref d, %d
|
530 |
| -// CHECK:STDOUT: %Cpp.ref.loc28: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] |
| 519 | +// CHECK:STDOUT: %Cpp.ref.loc14: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] |
531 | 520 | // CHECK:STDOUT: %Base.ref: type = name_ref Base, imports.%Base.decl [concrete = constants.%Base]
|
532 | 521 | // CHECK:STDOUT: %g.ref: %.7c6 = name_ref g, imports.%.362 [concrete = constants.%empty_struct.49e]
|
533 |
| -// CHECK:STDOUT: %addr: %ptr.fb2 = addr_of <error> [concrete = <error>] |
534 |
| -// CHECK:STDOUT: %.loc28_18.1: %ptr.a97 = as_compatible %addr [concrete = <error>] |
535 |
| -// CHECK:STDOUT: %.loc28_18.2: %ptr.a97 = converted %addr, %.loc28_18.1 [concrete = <error>] |
536 |
| -// CHECK:STDOUT: %g__carbon_thunk.call: init %empty_tuple.type = call imports.%g__carbon_thunk.decl(%.loc28_18.2) |
| 522 | +// CHECK:STDOUT: %bound_method: <bound method> = bound_method %d.ref, %g.ref |
| 523 | +// CHECK:STDOUT: %.loc14_3.1: ref %Base = class_element_access %d.ref, element0 |
| 524 | +// CHECK:STDOUT: %.loc14_3.2: ref %Base = converted %d.ref, %.loc14_3.1 |
| 525 | +// CHECK:STDOUT: %.loc14_3.3: %Base = bind_value %.loc14_3.2 |
| 526 | +// CHECK:STDOUT: %.loc14_3.4: ref %Base = value_as_ref %.loc14_3.3 |
| 527 | +// CHECK:STDOUT: %addr: %ptr.fb2 = addr_of %.loc14_3.4 |
| 528 | +// CHECK:STDOUT: %.loc14_18.1: %ptr.a97 = as_compatible %addr |
| 529 | +// CHECK:STDOUT: %.loc14_18.2: %ptr.a97 = converted %addr, %.loc14_18.1 |
| 530 | +// CHECK:STDOUT: %g__carbon_thunk.call: init %empty_tuple.type = call imports.%g__carbon_thunk.decl(%.loc14_18.2) |
537 | 531 | // CHECK:STDOUT: <elided>
|
538 | 532 | // CHECK:STDOUT: }
|
539 | 533 | // CHECK:STDOUT:
|
0 commit comments