You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Support for importing const-qualified types from C++. (#5794)
Incidentally also supports import of pointers-to-pointers.
Imported const-qualified types aren't especially useful just yet,
because on the Carbon side we don't yet permit conversions from
non-const to const types, so most of the tests still fail, but for
different reasons now.
// CHECK:STDERR: fail_todo_import_const_short.carbon:[[@LINE+8]]:11: error: cannot implicitly convert expression of type `i16` to `const i16` [ConversionFailure]
207
207
// CHECK:STDERR: Cpp.foo(1 as i16);
208
-
// CHECK:STDERR: ^~~~~~~
209
-
// CHECK:STDERR: fail_todo_import_const_short.carbon:[[@LINE+4]]:3: note: in `Cpp` name lookup for `foo` [InCppNameLookup]
208
+
// CHECK:STDERR: ^~~~~~~~
209
+
// CHECK:STDERR: fail_todo_import_const_short.carbon:[[@LINE+5]]:11: note: type `i16` does not implement interface `Core.ImplicitAs(const i16)` [MissingImplInMemberAccessNote]
210
210
// CHECK:STDERR: Cpp.foo(1 as i16);
211
-
// CHECK:STDERR: ^~~~~~~
211
+
// CHECK:STDERR: ^~~~~~~~
212
+
// CHECK:STDERR: fail_todo_import_const_short.carbon: note: initializing function parameter [InCallToFunctionParam]
// CHECK:STDERR: fail_todo_import_const_short_pointer.carbon:[[@LINE+8]]:11: error: cannot implicitly convert expression of type `i16*` to `const i16*` [ConversionFailure]
312
313
// CHECK:STDERR: Cpp.foo(&a);
313
-
// CHECK:STDERR: ^~~~~~~
314
-
// CHECK:STDERR: fail_todo_import_const_short_pointer.carbon:[[@LINE+4]]:3: note: in `Cpp` name lookup for `foo` [InCppNameLookup]
314
+
// CHECK:STDERR: ^~
315
+
// CHECK:STDERR: fail_todo_import_const_short_pointer.carbon:[[@LINE+5]]:11: note: type `i16*` does not implement interface `Core.ImplicitAs(const i16*)` [MissingImplInMemberAccessNote]
315
316
// CHECK:STDERR: Cpp.foo(&a);
316
-
// CHECK:STDERR: ^~~~~~~
317
+
// CHECK:STDERR: ^~
318
+
// CHECK:STDERR: fail_todo_import_const_short_pointer.carbon: note: initializing function parameter [InCallToFunctionParam]
// CHECK:STDERR: fail_todo_import_const_int.carbon:[[@LINE+8]]:11: error: cannot implicitly convert expression of type `Core.IntLiteral` to `const i32` [ConversionFailure]
267
267
// CHECK:STDERR: Cpp.foo(1);
268
-
// CHECK:STDERR: ^~~~~~~
269
-
// CHECK:STDERR: fail_todo_import_const_int.carbon:[[@LINE+4]]:3: note: in `Cpp` name lookup for `foo` [InCppNameLookup]
268
+
// CHECK:STDERR: ^
269
+
// CHECK:STDERR: fail_todo_import_const_int.carbon:[[@LINE+5]]:11: note: type `Core.IntLiteral` does not implement interface `Core.ImplicitAs(const i32)` [MissingImplInMemberAccessNote]
270
270
// CHECK:STDERR: Cpp.foo(1);
271
-
// CHECK:STDERR: ^~~~~~~
271
+
// CHECK:STDERR: ^
272
+
// CHECK:STDERR: fail_todo_import_const_int.carbon: note: initializing function parameter [InCallToFunctionParam]
// CHECK:STDERR: fail_todo_import_const_int_pointer.carbon:[[@LINE+8]]:11: error: cannot implicitly convert expression of type `i32*` to `const i32*` [ConversionFailure]
372
373
// CHECK:STDERR: Cpp.foo(&a);
373
-
// CHECK:STDERR: ^~~~~~~
374
-
// CHECK:STDERR: fail_todo_import_const_int_pointer.carbon:[[@LINE+4]]:3: note: in `Cpp` name lookup for `foo` [InCppNameLookup]
374
+
// CHECK:STDERR: ^~
375
+
// CHECK:STDERR: fail_todo_import_const_int_pointer.carbon:[[@LINE+5]]:11: note: type `i32*` does not implement interface `Core.ImplicitAs(const i32*)` [MissingImplInMemberAccessNote]
375
376
// CHECK:STDERR: Cpp.foo(&a);
376
-
// CHECK:STDERR: ^~~~~~~
377
+
// CHECK:STDERR: ^~
378
+
// CHECK:STDERR: fail_todo_import_const_int_pointer.carbon: note: initializing function parameter [InCallToFunctionParam]
0 commit comments