|
| 1 | +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM |
| 2 | +// Exceptions. See /LICENSE for license information. |
| 3 | +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| 4 | +// |
| 5 | +// AUTOUPDATE |
| 6 | +// TIP: To test this file alone, run: |
| 7 | +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/no_prelude/unsupported_decl_type.carbon |
| 8 | +// TIP: To dump output, run: |
| 9 | +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/no_prelude/unsupported_decl_type.carbon |
| 10 | + |
| 11 | +// --- unsupported_decl.h |
| 12 | + |
| 13 | +class foo; |
| 14 | + |
| 15 | +// --- fail_import_unsupported_decl.carbon |
| 16 | + |
| 17 | +library "[[@TEST_NAME]]"; |
| 18 | + |
| 19 | +import Cpp library "unsupported_decl.h"; |
| 20 | + |
| 21 | +fn F() { |
| 22 | + // CHECK:STDERR: fail_import_unsupported_decl.carbon:[[@LINE+11]]:3: error: semantics TODO: `Unsupported: Declaration type CXXRecord` [SemanticsTodo] |
| 23 | + // CHECK:STDERR: Cpp.foo(); |
| 24 | + // CHECK:STDERR: ^~~~~~~ |
| 25 | + // CHECK:STDERR: fail_import_unsupported_decl.carbon:[[@LINE+8]]:3: note: in `Cpp` name lookup for `foo` [InCppNameLookup] |
| 26 | + // CHECK:STDERR: Cpp.foo(); |
| 27 | + // CHECK:STDERR: ^~~~~~~ |
| 28 | + // CHECK:STDERR: |
| 29 | + // CHECK:STDERR: fail_import_unsupported_decl.carbon:[[@LINE+4]]:3: error: member name `foo` not found in `Cpp` [MemberNameNotFoundInScope] |
| 30 | + // CHECK:STDERR: Cpp.foo(); |
| 31 | + // CHECK:STDERR: ^~~~~~~ |
| 32 | + // CHECK:STDERR: |
| 33 | + Cpp.foo(); |
| 34 | +} |
| 35 | + |
| 36 | +// CHECK:STDOUT: --- fail_import_unsupported_decl.carbon |
| 37 | +// CHECK:STDOUT: |
| 38 | +// CHECK:STDOUT: constants { |
| 39 | +// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] |
| 40 | +// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] |
| 41 | +// CHECK:STDOUT: } |
| 42 | +// CHECK:STDOUT: |
| 43 | +// CHECK:STDOUT: imports { |
| 44 | +// CHECK:STDOUT: %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] { |
| 45 | +// CHECK:STDOUT: .foo = <poisoned> |
| 46 | +// CHECK:STDOUT: } |
| 47 | +// CHECK:STDOUT: } |
| 48 | +// CHECK:STDOUT: |
| 49 | +// CHECK:STDOUT: file { |
| 50 | +// CHECK:STDOUT: package: <namespace> = namespace [concrete] { |
| 51 | +// CHECK:STDOUT: .Cpp = imports.%Cpp |
| 52 | +// CHECK:STDOUT: .F = %F.decl |
| 53 | +// CHECK:STDOUT: } |
| 54 | +// CHECK:STDOUT: %Cpp.import_cpp = import_cpp { |
| 55 | +// CHECK:STDOUT: import Cpp "unsupported_decl.h" |
| 56 | +// CHECK:STDOUT: } |
| 57 | +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} |
| 58 | +// CHECK:STDOUT: } |
| 59 | +// CHECK:STDOUT: |
| 60 | +// CHECK:STDOUT: fn @F() { |
| 61 | +// CHECK:STDOUT: !entry: |
| 62 | +// CHECK:STDOUT: %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] |
| 63 | +// CHECK:STDOUT: %foo.ref: <error> = name_ref foo, <error> [concrete = <error>] |
| 64 | +// CHECK:STDOUT: return |
| 65 | +// CHECK:STDOUT: } |
| 66 | +// CHECK:STDOUT: |
0 commit comments