@@ -34,7 +34,7 @@ fn F() {
34
34
// CHECK:STDERR: Cpp.foo({});
35
35
// CHECK:STDERR: ^~~~~~~
36
36
// CHECK:STDERR:
37
- // CHECK:STDERR: fail_todo_import_decl_value_param_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: parameter type: class C` [SemanticsTodo]
37
+ // CHECK:STDERR: fail_todo_import_decl_value_param_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: parameter type: C` [SemanticsTodo]
38
38
// CHECK:STDERR: Cpp.foo({});
39
39
// CHECK:STDERR: ^~~~~~~
40
40
// CHECK:STDERR: fail_todo_import_decl_value_param_type.carbon:[[@LINE+4]]:3: note: in `Cpp` name lookup for `foo` [InCppNameLookup]
@@ -63,7 +63,7 @@ fn F() {
63
63
// CHECK:STDERR: ^
64
64
// CHECK:STDERR:
65
65
let c: Cpp.C;
66
- // CHECK:STDERR: fail_todo_import_decl_value_param_type_previously_imported.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: parameter type: class C` [SemanticsTodo]
66
+ // CHECK:STDERR: fail_todo_import_decl_value_param_type_previously_imported.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: parameter type: C` [SemanticsTodo]
67
67
// CHECK:STDERR: Cpp.foo(c);
68
68
// CHECK:STDERR: ^~~~~~~
69
69
// CHECK:STDERR: fail_todo_import_decl_value_param_type_previously_imported.carbon:[[@LINE+4]]:3: note: in `Cpp` name lookup for `foo` [InCppNameLookup]
@@ -98,15 +98,15 @@ fn F() {
98
98
// CHECK:STDERR: Cpp.foo1({});
99
99
// CHECK:STDERR: ^~~~~~~~
100
100
// CHECK:STDERR:
101
- // CHECK:STDERR: fail_todo_import_double_decl_value_param_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: parameter type: class C` [SemanticsTodo]
101
+ // CHECK:STDERR: fail_todo_import_double_decl_value_param_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: parameter type: C` [SemanticsTodo]
102
102
// CHECK:STDERR: Cpp.foo1({});
103
103
// CHECK:STDERR: ^~~~~~~~
104
104
// CHECK:STDERR: fail_todo_import_double_decl_value_param_type.carbon:[[@LINE+4]]:3: note: in `Cpp` name lookup for `foo1` [InCppNameLookup]
105
105
// CHECK:STDERR: Cpp.foo1({});
106
106
// CHECK:STDERR: ^~~~~~~~
107
107
// CHECK:STDERR:
108
108
Cpp.foo1 ({});
109
- // CHECK:STDERR: fail_todo_import_double_decl_value_param_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: parameter type: class C` [SemanticsTodo]
109
+ // CHECK:STDERR: fail_todo_import_double_decl_value_param_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: parameter type: C` [SemanticsTodo]
110
110
// CHECK:STDERR: Cpp.foo2({});
111
111
// CHECK:STDERR: ^~~~~~~~
112
112
// CHECK:STDERR: fail_todo_import_double_decl_value_param_type.carbon:[[@LINE+4]]:3: note: in `Cpp` name lookup for `foo2` [InCppNameLookup]
@@ -283,7 +283,7 @@ fn F() {
283
283
284
284
class C;
285
285
286
- auto foo (C* ) - > void;
286
+ auto foo (C* _Nonnull ) - > void;
287
287
288
288
// --- fail_todo_import_decl_pointer_param_type.carbon
289
289
@@ -300,7 +300,7 @@ import Cpp library "decl_pointer_param_type.h";
300
300
// CHECK:STDERR:
301
301
fn F (c: Cpp.C* ) {
302
302
// @dump-sem-ir-begin
303
- // CHECK:STDERR: fail_todo_import_decl_pointer_param_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: parameter type: class C *` [SemanticsTodo]
303
+ // CHECK:STDERR: fail_todo_import_decl_pointer_param_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: parameter type: C * _Nonnull ` [SemanticsTodo]
304
304
// CHECK:STDERR: Cpp.foo(c);
305
305
// CHECK:STDERR: ^~~~~~~
306
306
// CHECK:STDERR: fail_todo_import_decl_pointer_param_type.carbon:[[@LINE+4]]:3: note: in `Cpp` name lookup for `foo` [InCppNameLookup]
@@ -319,23 +319,16 @@ fn F(c: Cpp.C*) {
319
319
320
320
class C {};
321
321
322
- auto foo (C* ) - > void;
322
+ auto foo (C* _Nonnull ) - > void;
323
323
324
- // --- fail_todo_import_definition_pointer_param_type .carbon
324
+ // --- import_definition_pointer_param_type .carbon
325
325
326
326
library "[[@TEST_NAME]]" ;
327
327
328
328
import Cpp library "definition_pointer_param_type.h" ;
329
329
330
330
fn F (c: Cpp.C* ) {
331
331
// @dump-sem-ir-begin
332
- // CHECK:STDERR: fail_todo_import_definition_pointer_param_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: parameter type: class C *` [SemanticsTodo]
333
- // CHECK:STDERR: Cpp.foo(c);
334
- // CHECK:STDERR: ^~~~~~~
335
- // CHECK:STDERR: fail_todo_import_definition_pointer_param_type.carbon:[[@LINE+4]]:3: note: in `Cpp` name lookup for `foo` [InCppNameLookup]
336
- // CHECK:STDERR: Cpp.foo(c);
337
- // CHECK:STDERR: ^~~~~~~
338
- // CHECK:STDERR:
339
332
Cpp.foo (c);
340
333
// @dump-sem-ir-end
341
334
}
@@ -364,7 +357,7 @@ fn F() {
364
357
// CHECK:STDERR: Cpp.foo();
365
358
// CHECK:STDERR: ^~~~~~~
366
359
// CHECK:STDERR:
367
- // CHECK:STDERR: fail_todo_import_decl_value_return_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: return type: class C` [SemanticsTodo]
360
+ // CHECK:STDERR: fail_todo_import_decl_value_return_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: return type: C` [SemanticsTodo]
368
361
// CHECK:STDERR: Cpp.foo();
369
362
// CHECK:STDERR: ^~~~~~~
370
363
// CHECK:STDERR: fail_todo_import_decl_value_return_type.carbon:[[@LINE+4]]:3: note: in `Cpp` name lookup for `foo` [InCppNameLookup]
@@ -404,7 +397,7 @@ fn F() {
404
397
405
398
class C;
406
399
407
- auto foo () - > C* ;
400
+ auto foo () - > C* _Nonnull ;
408
401
409
402
// --- fail_todo_import_decl_pointer_return_type.carbon
410
403
@@ -414,7 +407,14 @@ import Cpp library "decl_pointer_return_type.h";
414
407
415
408
fn F () {
416
409
// @dump-sem-ir-begin
417
- // CHECK:STDERR: fail_todo_import_decl_pointer_return_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: return type: class C *` [SemanticsTodo]
410
+ // CHECK:STDERR: fail_todo_import_decl_pointer_return_type.carbon:[[@LINE+14]]:3: error: semantics TODO: `Unsupported: Record declarations without a definition` [SemanticsTodo]
411
+ // CHECK:STDERR: Cpp.foo();
412
+ // CHECK:STDERR: ^~~~~~~
413
+ // CHECK:STDERR: fail_todo_import_decl_pointer_return_type.carbon:[[@LINE+11]]:3: note: in `Cpp` name lookup for `foo` [InCppNameLookup]
414
+ // CHECK:STDERR: Cpp.foo();
415
+ // CHECK:STDERR: ^~~~~~~
416
+ // CHECK:STDERR:
417
+ // CHECK:STDERR: fail_todo_import_decl_pointer_return_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: return type: C * _Nonnull` [SemanticsTodo]
418
418
// CHECK:STDERR: Cpp.foo();
419
419
// CHECK:STDERR: ^~~~~~~
420
420
// CHECK:STDERR: fail_todo_import_decl_pointer_return_type.carbon:[[@LINE+4]]:3: note: in `Cpp` name lookup for `foo` [InCppNameLookup]
@@ -433,23 +433,16 @@ fn F() {
433
433
434
434
class C {};
435
435
436
- auto foo () - > C* ;
436
+ auto foo () - > C* _Nonnull ;
437
437
438
- // --- fail_todo_import_definition_pointer_return_type .carbon
438
+ // --- import_definition_pointer_return_type .carbon
439
439
440
440
library "[[@TEST_NAME]]" ;
441
441
442
442
import Cpp library "definition_pointer_return_type.h" ;
443
443
444
444
fn F () {
445
445
// @dump-sem-ir-begin
446
- // CHECK:STDERR: fail_todo_import_definition_pointer_return_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: return type: class C *` [SemanticsTodo]
447
- // CHECK:STDERR: Cpp.foo();
448
- // CHECK:STDERR: ^~~~~~~
449
- // CHECK:STDERR: fail_todo_import_definition_pointer_return_type.carbon:[[@LINE+4]]:3: note: in `Cpp` name lookup for `foo` [InCppNameLookup]
450
- // CHECK:STDERR: Cpp.foo();
451
- // CHECK:STDERR: ^~~~~~~
452
- // CHECK:STDERR:
453
446
Cpp.foo ();
454
447
// @dump-sem-ir-end
455
448
}
@@ -904,27 +897,36 @@ fn F() {
904
897
// CHECK:STDOUT: <elided>
905
898
// CHECK:STDOUT: }
906
899
// CHECK:STDOUT:
907
- // CHECK:STDOUT: --- fail_todo_import_definition_pointer_param_type .carbon
900
+ // CHECK:STDOUT: --- import_definition_pointer_param_type .carbon
908
901
// CHECK:STDOUT:
909
902
// CHECK:STDOUT: constants {
910
903
// CHECK:STDOUT: %C: type = class_type @C [concrete]
911
904
// CHECK:STDOUT: %ptr: type = ptr_type %C [concrete]
905
+ // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
906
+ // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete]
907
+ // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete]
912
908
// CHECK:STDOUT: }
913
909
// CHECK:STDOUT:
914
910
// CHECK:STDOUT: imports {
915
911
// CHECK:STDOUT: %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
916
912
// CHECK:STDOUT: .C = %C.decl
917
- // CHECK:STDOUT: .foo = <error>
913
+ // CHECK:STDOUT: .foo = %foo.decl
918
914
// CHECK:STDOUT: import Cpp//...
919
915
// CHECK:STDOUT: }
920
916
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
917
+ // CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] {
918
+ // CHECK:STDOUT: <elided>
919
+ // CHECK:STDOUT: } {
920
+ // CHECK:STDOUT: <elided>
921
+ // CHECK:STDOUT: }
921
922
// CHECK:STDOUT: }
922
923
// CHECK:STDOUT:
923
924
// CHECK:STDOUT: fn @F(%c.param: %ptr) {
924
925
// CHECK:STDOUT: !entry:
925
- // CHECK:STDOUT: %Cpp.ref.loc15 : <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
926
- // CHECK:STDOUT: %foo.ref: <error> = name_ref foo, <error> [concrete = <error> ]
926
+ // CHECK:STDOUT: %Cpp.ref.loc8 : <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
927
+ // CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo ]
927
928
// CHECK:STDOUT: %c.ref: %ptr = name_ref c, %c
929
+ // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%c.ref)
928
930
// CHECK:STDOUT: <elided>
929
931
// CHECK:STDOUT: }
930
932
// CHECK:STDOUT:
@@ -989,6 +991,7 @@ fn F() {
989
991
// CHECK:STDOUT: imports {
990
992
// CHECK:STDOUT: %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
991
993
// CHECK:STDOUT: .foo = <error>
994
+ // CHECK:STDOUT: .C = <error>
992
995
// CHECK:STDOUT: import Cpp//...
993
996
// CHECK:STDOUT: }
994
997
// CHECK:STDOUT: }
@@ -1000,22 +1003,34 @@ fn F() {
1000
1003
// CHECK:STDOUT: <elided>
1001
1004
// CHECK:STDOUT: }
1002
1005
// CHECK:STDOUT:
1003
- // CHECK:STDOUT: --- fail_todo_import_definition_pointer_return_type .carbon
1006
+ // CHECK:STDOUT: --- import_definition_pointer_return_type .carbon
1004
1007
// CHECK:STDOUT:
1005
1008
// CHECK:STDOUT: constants {
1009
+ // CHECK:STDOUT: %C: type = class_type @C [concrete]
1010
+ // CHECK:STDOUT: %ptr: type = ptr_type %C [concrete]
1011
+ // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete]
1012
+ // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete]
1006
1013
// CHECK:STDOUT: }
1007
1014
// CHECK:STDOUT:
1008
1015
// CHECK:STDOUT: imports {
1009
1016
// CHECK:STDOUT: %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
1010
- // CHECK:STDOUT: .foo = <error>
1017
+ // CHECK:STDOUT: .foo = %foo.decl
1018
+ // CHECK:STDOUT: .C = %C.decl
1011
1019
// CHECK:STDOUT: import Cpp//...
1012
1020
// CHECK:STDOUT: }
1021
+ // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
1022
+ // CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] {
1023
+ // CHECK:STDOUT: <elided>
1024
+ // CHECK:STDOUT: } {
1025
+ // CHECK:STDOUT: <elided>
1026
+ // CHECK:STDOUT: }
1013
1027
// CHECK:STDOUT: }
1014
1028
// CHECK:STDOUT:
1015
1029
// CHECK:STDOUT: fn @F() {
1016
1030
// CHECK:STDOUT: !entry:
1017
1031
// CHECK:STDOUT: %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
1018
- // CHECK:STDOUT: %foo.ref: <error> = name_ref foo, <error> [concrete = <error>]
1032
+ // CHECK:STDOUT: %foo.ref: %foo.type = name_ref foo, imports.%foo.decl [concrete = constants.%foo]
1033
+ // CHECK:STDOUT: %foo.call: init %ptr = call %foo.ref()
1019
1034
// CHECK:STDOUT: <elided>
1020
1035
// CHECK:STDOUT: }
1021
1036
// CHECK:STDOUT:
0 commit comments