|
|
@@ -2,8 +2,7 @@
|
|
|
// Exceptions. See /LICENSE for license information.
|
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
|
//
|
|
|
-// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
|
|
-// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
|
|
+// EXTRA-ARGS: --dump-sem-ir-ranges=only
|
|
|
//
|
|
|
// AUTOUPDATE
|
|
|
// TIP: To test this file alone, run:
|
|
|
@@ -28,6 +27,7 @@ library "[[@TEST_NAME]]";
|
|
|
import Cpp library "decl_value_param_type.h";
|
|
|
|
|
|
fn F() {
|
|
|
+ //@dump-sem-ir-begin
|
|
|
// TODO: This should fail on the fact `S` is declared and not defined.
|
|
|
// CHECK:STDERR: fail_todo_import_decl_value_param_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: parameter type: struct S` [SemanticsTodo]
|
|
|
// CHECK:STDERR: Cpp.foo({});
|
|
|
@@ -37,33 +37,104 @@ fn F() {
|
|
|
// CHECK:STDERR: ^~~~~~~
|
|
|
// CHECK:STDERR:
|
|
|
Cpp.foo({});
|
|
|
+ //@dump-sem-ir-end
|
|
|
}
|
|
|
|
|
|
// ============================================================================
|
|
|
-// Defined struct as parameter type
|
|
|
+// Defined struct without data members as parameter type
|
|
|
// ============================================================================
|
|
|
|
|
|
-// --- definition_value_param_type.h
|
|
|
+// --- definition_no_data_members_value_param_type.h
|
|
|
|
|
|
struct S {};
|
|
|
|
|
|
auto foo(S) -> void;
|
|
|
|
|
|
-// --- fail_todo_import_definition_value_param_type.carbon
|
|
|
+// --- fail_todo_import_definition_no_data_members_value_param_type.carbon
|
|
|
|
|
|
library "[[@TEST_NAME]]";
|
|
|
|
|
|
-import Cpp library "definition_value_param_type.h";
|
|
|
+import Cpp library "definition_no_data_members_value_param_type.h";
|
|
|
|
|
|
fn F() {
|
|
|
- // CHECK:STDERR: fail_todo_import_definition_value_param_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: parameter type: struct S` [SemanticsTodo]
|
|
|
+ //@dump-sem-ir-begin
|
|
|
+ // CHECK:STDERR: fail_todo_import_definition_no_data_members_value_param_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: parameter type: struct S` [SemanticsTodo]
|
|
|
// CHECK:STDERR: Cpp.foo({});
|
|
|
// CHECK:STDERR: ^~~~~~~
|
|
|
- // CHECK:STDERR: fail_todo_import_definition_value_param_type.carbon:[[@LINE+4]]:3: note: in `Cpp` name lookup for `foo` [InCppNameLookup]
|
|
|
+ // CHECK:STDERR: fail_todo_import_definition_no_data_members_value_param_type.carbon:[[@LINE+4]]:3: note: in `Cpp` name lookup for `foo` [InCppNameLookup]
|
|
|
// CHECK:STDERR: Cpp.foo({});
|
|
|
// CHECK:STDERR: ^~~~~~~
|
|
|
// CHECK:STDERR:
|
|
|
Cpp.foo({});
|
|
|
+ //@dump-sem-ir-end
|
|
|
+}
|
|
|
+
|
|
|
+// ============================================================================
|
|
|
+// Defined struct with a single data member as parameter type
|
|
|
+// ============================================================================
|
|
|
+
|
|
|
+// --- definition_single_data_member_value_param_type.h
|
|
|
+
|
|
|
+struct D {};
|
|
|
+
|
|
|
+struct S {
|
|
|
+ D d;
|
|
|
+};
|
|
|
+
|
|
|
+auto foo(S) -> void;
|
|
|
+
|
|
|
+// --- fail_todo_import_definition_single_data_member_value_param_type.carbon
|
|
|
+
|
|
|
+library "[[@TEST_NAME]]";
|
|
|
+
|
|
|
+import Cpp library "definition_single_data_member_value_param_type.h";
|
|
|
+
|
|
|
+fn F() {
|
|
|
+ //@dump-sem-ir-begin
|
|
|
+ // CHECK:STDERR: fail_todo_import_definition_single_data_member_value_param_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: parameter type: struct S` [SemanticsTodo]
|
|
|
+ // CHECK:STDERR: Cpp.foo({});
|
|
|
+ // CHECK:STDERR: ^~~~~~~
|
|
|
+ // CHECK:STDERR: fail_todo_import_definition_single_data_member_value_param_type.carbon:[[@LINE+4]]:3: note: in `Cpp` name lookup for `foo` [InCppNameLookup]
|
|
|
+ // CHECK:STDERR: Cpp.foo({});
|
|
|
+ // CHECK:STDERR: ^~~~~~~
|
|
|
+ // CHECK:STDERR:
|
|
|
+ Cpp.foo({});
|
|
|
+ //@dump-sem-ir-end
|
|
|
+}
|
|
|
+
|
|
|
+// ============================================================================
|
|
|
+// Defined struct with multiple data members as parameter type
|
|
|
+// ============================================================================
|
|
|
+
|
|
|
+// --- definition_multiple_data_members_value_param_type.h
|
|
|
+
|
|
|
+struct D {};
|
|
|
+
|
|
|
+struct S {
|
|
|
+ D d1;
|
|
|
+ D d2;
|
|
|
+ D d3;
|
|
|
+};
|
|
|
+
|
|
|
+auto foo(S) -> void;
|
|
|
+
|
|
|
+// --- fail_todo_import_definition_multiple_data_members_value_param_type.carbon
|
|
|
+
|
|
|
+library "[[@TEST_NAME]]";
|
|
|
+
|
|
|
+import Cpp library "definition_multiple_data_members_value_param_type.h";
|
|
|
+
|
|
|
+fn F() {
|
|
|
+ //@dump-sem-ir-begin
|
|
|
+ // CHECK:STDERR: fail_todo_import_definition_multiple_data_members_value_param_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: parameter type: struct S` [SemanticsTodo]
|
|
|
+ // CHECK:STDERR: Cpp.foo({});
|
|
|
+ // CHECK:STDERR: ^~~~~~~
|
|
|
+ // CHECK:STDERR: fail_todo_import_definition_multiple_data_members_value_param_type.carbon:[[@LINE+4]]:3: note: in `Cpp` name lookup for `foo` [InCppNameLookup]
|
|
|
+ // CHECK:STDERR: Cpp.foo({});
|
|
|
+ // CHECK:STDERR: ^~~~~~~
|
|
|
+ // CHECK:STDERR:
|
|
|
+ Cpp.foo({});
|
|
|
+ //@dump-sem-ir-end
|
|
|
}
|
|
|
|
|
|
// ============================================================================
|
|
|
@@ -90,6 +161,7 @@ import Cpp library "decl_pointer_param_type.h";
|
|
|
// CHECK:STDERR: ^~~~~
|
|
|
// CHECK:STDERR:
|
|
|
fn F(s: Cpp.S*) {
|
|
|
+ //@dump-sem-ir-begin
|
|
|
// CHECK:STDERR: fail_todo_import_decl_pointer_param_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: parameter type: struct S *` [SemanticsTodo]
|
|
|
// CHECK:STDERR: Cpp.foo(s);
|
|
|
// CHECK:STDERR: ^~~~~~~
|
|
|
@@ -98,6 +170,7 @@ fn F(s: Cpp.S*) {
|
|
|
// CHECK:STDERR: ^~~~~~~
|
|
|
// CHECK:STDERR:
|
|
|
Cpp.foo(s);
|
|
|
+ //@dump-sem-ir-end
|
|
|
}
|
|
|
|
|
|
// ============================================================================
|
|
|
@@ -117,6 +190,7 @@ library "[[@TEST_NAME]]";
|
|
|
import Cpp library "definition_pointer_param_type.h";
|
|
|
|
|
|
fn F(s: Cpp.S*) {
|
|
|
+ //@dump-sem-ir-begin
|
|
|
// CHECK:STDERR: fail_todo_import_definition_pointer_param_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: parameter type: struct S *` [SemanticsTodo]
|
|
|
// CHECK:STDERR: Cpp.foo(s);
|
|
|
// CHECK:STDERR: ^~~~~~~
|
|
|
@@ -125,6 +199,7 @@ fn F(s: Cpp.S*) {
|
|
|
// CHECK:STDERR: ^~~~~~~
|
|
|
// CHECK:STDERR:
|
|
|
Cpp.foo(s);
|
|
|
+ //@dump-sem-ir-end
|
|
|
}
|
|
|
|
|
|
// ============================================================================
|
|
|
@@ -144,6 +219,7 @@ library "[[@TEST_NAME]]";
|
|
|
import Cpp library "decl_value_return_type.h";
|
|
|
|
|
|
fn F() {
|
|
|
+ //@dump-sem-ir-begin
|
|
|
// TODO: This should fail on the fact `S` is declared and not defined.
|
|
|
// CHECK:STDERR: fail_todo_import_decl_value_return_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: return type: struct S` [SemanticsTodo]
|
|
|
// CHECK:STDERR: Cpp.foo();
|
|
|
@@ -153,6 +229,7 @@ fn F() {
|
|
|
// CHECK:STDERR: ^~~~~~~
|
|
|
// CHECK:STDERR:
|
|
|
Cpp.foo();
|
|
|
+ //@dump-sem-ir-end
|
|
|
}
|
|
|
|
|
|
// ============================================================================
|
|
|
@@ -172,6 +249,7 @@ library "[[@TEST_NAME]]";
|
|
|
import Cpp library "definition_value_return_type.h";
|
|
|
|
|
|
fn F() {
|
|
|
+ //@dump-sem-ir-begin
|
|
|
// CHECK:STDERR: fail_todo_import_definition_value_return_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: return type: struct S` [SemanticsTodo]
|
|
|
// CHECK:STDERR: Cpp.foo();
|
|
|
// CHECK:STDERR: ^~~~~~~
|
|
|
@@ -180,6 +258,7 @@ fn F() {
|
|
|
// CHECK:STDERR: ^~~~~~~
|
|
|
// CHECK:STDERR:
|
|
|
Cpp.foo();
|
|
|
+ //@dump-sem-ir-end
|
|
|
}
|
|
|
|
|
|
// ============================================================================
|
|
|
@@ -199,6 +278,7 @@ library "[[@TEST_NAME]]";
|
|
|
import Cpp library "decl_pointer_return_type.h";
|
|
|
|
|
|
fn F() {
|
|
|
+ //@dump-sem-ir-begin
|
|
|
// CHECK:STDERR: fail_todo_import_decl_pointer_return_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: return type: struct S *` [SemanticsTodo]
|
|
|
// CHECK:STDERR: Cpp.foo();
|
|
|
// CHECK:STDERR: ^~~~~~~
|
|
|
@@ -207,6 +287,7 @@ fn F() {
|
|
|
// CHECK:STDERR: ^~~~~~~
|
|
|
// CHECK:STDERR:
|
|
|
Cpp.foo();
|
|
|
+ //@dump-sem-ir-end
|
|
|
}
|
|
|
|
|
|
// ============================================================================
|
|
|
@@ -226,6 +307,7 @@ library "[[@TEST_NAME]]";
|
|
|
import Cpp library "definition_pointer_return_type.h";
|
|
|
|
|
|
fn F() {
|
|
|
+ //@dump-sem-ir-begin
|
|
|
// CHECK:STDERR: fail_todo_import_definition_pointer_return_type.carbon:[[@LINE+7]]:3: error: semantics TODO: `Unsupported: return type: struct S *` [SemanticsTodo]
|
|
|
// CHECK:STDERR: Cpp.foo();
|
|
|
// CHECK:STDERR: ^~~~~~~
|
|
|
@@ -234,13 +316,12 @@ fn F() {
|
|
|
// CHECK:STDERR: ^~~~~~~
|
|
|
// CHECK:STDERR:
|
|
|
Cpp.foo();
|
|
|
+ //@dump-sem-ir-end
|
|
|
}
|
|
|
|
|
|
// CHECK:STDOUT: --- fail_todo_import_decl_value_param_type.carbon
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: constants {
|
|
|
-// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
|
|
-// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
|
|
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
@@ -251,15 +332,25 @@ fn F() {
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: file {
|
|
|
-// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
|
|
-// CHECK:STDOUT: .Cpp = imports.%Cpp
|
|
|
-// CHECK:STDOUT: .F = %F.decl
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %Cpp.import_cpp = import_cpp {
|
|
|
-// CHECK:STDOUT: import Cpp "decl_value_param_type.h"
|
|
|
+// CHECK:STDOUT: fn @F() {
|
|
|
+// CHECK:STDOUT: !entry:
|
|
|
+// CHECK:STDOUT: %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
|
|
+// CHECK:STDOUT: %foo.ref: <error> = name_ref foo, <error> [concrete = <error>]
|
|
|
+// CHECK:STDOUT: %.loc16: %empty_struct_type = struct_literal ()
|
|
|
+// CHECK:STDOUT: <elided>
|
|
|
+// CHECK:STDOUT: }
|
|
|
+// CHECK:STDOUT:
|
|
|
+// CHECK:STDOUT: --- fail_todo_import_definition_no_data_members_value_param_type.carbon
|
|
|
+// CHECK:STDOUT:
|
|
|
+// CHECK:STDOUT: constants {
|
|
|
+// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
|
|
+// CHECK:STDOUT: }
|
|
|
+// CHECK:STDOUT:
|
|
|
+// CHECK:STDOUT: imports {
|
|
|
+// CHECK:STDOUT: %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
|
|
|
+// CHECK:STDOUT: .foo = <error>
|
|
|
+// CHECK:STDOUT: import Cpp//...
|
|
|
// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {}
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: fn @F() {
|
|
|
@@ -267,14 +358,12 @@ fn F() {
|
|
|
// CHECK:STDOUT: %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
|
|
// CHECK:STDOUT: %foo.ref: <error> = name_ref foo, <error> [concrete = <error>]
|
|
|
// CHECK:STDOUT: %.loc15: %empty_struct_type = struct_literal ()
|
|
|
-// CHECK:STDOUT: return
|
|
|
+// CHECK:STDOUT: <elided>
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: --- fail_todo_import_definition_value_param_type.carbon
|
|
|
+// CHECK:STDOUT: --- fail_todo_import_definition_single_data_member_value_param_type.carbon
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: constants {
|
|
|
-// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
|
|
-// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
|
|
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
@@ -285,30 +374,38 @@ fn F() {
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: file {
|
|
|
-// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
|
|
-// CHECK:STDOUT: .Cpp = imports.%Cpp
|
|
|
-// CHECK:STDOUT: .F = %F.decl
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %Cpp.import_cpp = import_cpp {
|
|
|
-// CHECK:STDOUT: import Cpp "definition_value_param_type.h"
|
|
|
+// CHECK:STDOUT: fn @F() {
|
|
|
+// CHECK:STDOUT: !entry:
|
|
|
+// CHECK:STDOUT: %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
|
|
+// CHECK:STDOUT: %foo.ref: <error> = name_ref foo, <error> [concrete = <error>]
|
|
|
+// CHECK:STDOUT: %.loc15: %empty_struct_type = struct_literal ()
|
|
|
+// CHECK:STDOUT: <elided>
|
|
|
+// CHECK:STDOUT: }
|
|
|
+// CHECK:STDOUT:
|
|
|
+// CHECK:STDOUT: --- fail_todo_import_definition_multiple_data_members_value_param_type.carbon
|
|
|
+// CHECK:STDOUT:
|
|
|
+// CHECK:STDOUT: constants {
|
|
|
+// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
|
|
+// CHECK:STDOUT: }
|
|
|
+// CHECK:STDOUT:
|
|
|
+// CHECK:STDOUT: imports {
|
|
|
+// CHECK:STDOUT: %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
|
|
|
+// CHECK:STDOUT: .foo = <error>
|
|
|
+// CHECK:STDOUT: import Cpp//...
|
|
|
// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {}
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: fn @F() {
|
|
|
// CHECK:STDOUT: !entry:
|
|
|
// CHECK:STDOUT: %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
|
|
// CHECK:STDOUT: %foo.ref: <error> = name_ref foo, <error> [concrete = <error>]
|
|
|
-// CHECK:STDOUT: %.loc14: %empty_struct_type = struct_literal ()
|
|
|
-// CHECK:STDOUT: return
|
|
|
+// CHECK:STDOUT: %.loc15: %empty_struct_type = struct_literal ()
|
|
|
+// CHECK:STDOUT: <elided>
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: --- fail_todo_import_decl_pointer_param_type.carbon
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: constants {
|
|
|
-// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
|
|
-// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: imports {
|
|
|
@@ -319,46 +416,19 @@ fn F() {
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: file {
|
|
|
-// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
|
|
-// CHECK:STDOUT: .Cpp = imports.%Cpp
|
|
|
-// CHECK:STDOUT: .F = %F.decl
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %Cpp.import_cpp = import_cpp {
|
|
|
-// CHECK:STDOUT: import Cpp "decl_pointer_param_type.h"
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
|
|
-// CHECK:STDOUT: %s.patt: <error> = binding_pattern s [concrete]
|
|
|
-// CHECK:STDOUT: %s.param_patt: <error> = value_param_pattern %s.patt, call_param0 [concrete]
|
|
|
-// CHECK:STDOUT: } {
|
|
|
-// CHECK:STDOUT: %s.param: <error> = value_param call_param0
|
|
|
-// CHECK:STDOUT: %.loc13: type = splice_block %ptr [concrete = <error>] {
|
|
|
-// CHECK:STDOUT: %Cpp.ref.loc13: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
|
|
-// CHECK:STDOUT: %S.ref: <error> = name_ref S, <error> [concrete = <error>]
|
|
|
-// CHECK:STDOUT: %ptr: type = ptr_type <error> [concrete = <error>]
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %s: <error> = bind_name s, %s.param [concrete = <error>]
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: fn @F(%s.param: <error>) {
|
|
|
// CHECK:STDOUT: !entry:
|
|
|
-// CHECK:STDOUT: %Cpp.ref.loc21: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
|
|
+// CHECK:STDOUT: %Cpp.ref.loc22: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
|
|
// CHECK:STDOUT: %foo.ref: <error> = name_ref foo, <error> [concrete = <error>]
|
|
|
// CHECK:STDOUT: %s.ref: <error> = name_ref s, %s [concrete = <error>]
|
|
|
-// CHECK:STDOUT: return
|
|
|
+// CHECK:STDOUT: <elided>
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: --- fail_todo_import_definition_pointer_param_type.carbon
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: constants {
|
|
|
// CHECK:STDOUT: %S: type = class_type @S [concrete]
|
|
|
-// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
|
|
-// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
|
|
// CHECK:STDOUT: %ptr: type = ptr_type %S [concrete]
|
|
|
-// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr [concrete]
|
|
|
-// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
|
|
-// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: imports {
|
|
|
@@ -369,52 +439,17 @@ fn F() {
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: file {
|
|
|
-// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
|
|
-// CHECK:STDOUT: .Cpp = imports.%Cpp
|
|
|
-// CHECK:STDOUT: .F = %F.decl
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %Cpp.import_cpp = import_cpp {
|
|
|
-// CHECK:STDOUT: import Cpp "definition_pointer_param_type.h"
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
|
|
-// CHECK:STDOUT: %s.patt: %pattern_type = binding_pattern s [concrete]
|
|
|
-// CHECK:STDOUT: %s.param_patt: %pattern_type = value_param_pattern %s.patt, call_param0 [concrete]
|
|
|
-// CHECK:STDOUT: } {
|
|
|
-// CHECK:STDOUT: %s.param: %ptr = value_param call_param0
|
|
|
-// CHECK:STDOUT: %.loc6: type = splice_block %ptr [concrete = constants.%ptr] {
|
|
|
-// CHECK:STDOUT: %Cpp.ref.loc6: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
|
|
-// CHECK:STDOUT: %S.decl: type = class_decl @S [concrete = constants.%S] {} {}
|
|
|
-// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type]
|
|
|
-// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
|
|
-// CHECK:STDOUT: %S.ref: type = name_ref S, %S.decl [concrete = constants.%S]
|
|
|
-// CHECK:STDOUT: %ptr: type = ptr_type %S.ref [concrete = constants.%ptr]
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %s: %ptr = bind_name s, %s.param
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: class @S {
|
|
|
-// CHECK:STDOUT: complete_type_witness = @F.%complete_type
|
|
|
-// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: !members:
|
|
|
-// CHECK:STDOUT: .Self = constants.%S
|
|
|
-// CHECK:STDOUT: import Cpp//...
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: fn @F(%s.param: %ptr) {
|
|
|
// CHECK:STDOUT: !entry:
|
|
|
-// CHECK:STDOUT: %Cpp.ref.loc14: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
|
|
+// CHECK:STDOUT: %Cpp.ref.loc15: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
|
|
// CHECK:STDOUT: %foo.ref: <error> = name_ref foo, <error> [concrete = <error>]
|
|
|
// CHECK:STDOUT: %s.ref: %ptr = name_ref s, %s
|
|
|
-// CHECK:STDOUT: return
|
|
|
+// CHECK:STDOUT: <elided>
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: --- fail_todo_import_decl_value_return_type.carbon
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: constants {
|
|
|
-// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
|
|
-// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: imports {
|
|
|
@@ -424,29 +459,16 @@ fn F() {
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: file {
|
|
|
-// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
|
|
-// CHECK:STDOUT: .Cpp = imports.%Cpp
|
|
|
-// CHECK:STDOUT: .F = %F.decl
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %Cpp.import_cpp = import_cpp {
|
|
|
-// CHECK:STDOUT: import Cpp "decl_value_return_type.h"
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {}
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: fn @F() {
|
|
|
// CHECK:STDOUT: !entry:
|
|
|
// CHECK:STDOUT: %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
|
|
// CHECK:STDOUT: %foo.ref: <error> = name_ref foo, <error> [concrete = <error>]
|
|
|
-// CHECK:STDOUT: return
|
|
|
+// CHECK:STDOUT: <elided>
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: --- fail_todo_import_definition_value_return_type.carbon
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: constants {
|
|
|
-// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
|
|
-// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: imports {
|
|
|
@@ -456,29 +478,16 @@ fn F() {
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: file {
|
|
|
-// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
|
|
-// CHECK:STDOUT: .Cpp = imports.%Cpp
|
|
|
-// CHECK:STDOUT: .F = %F.decl
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %Cpp.import_cpp = import_cpp {
|
|
|
-// CHECK:STDOUT: import Cpp "definition_value_return_type.h"
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {}
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: fn @F() {
|
|
|
// CHECK:STDOUT: !entry:
|
|
|
// CHECK:STDOUT: %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
|
|
// CHECK:STDOUT: %foo.ref: <error> = name_ref foo, <error> [concrete = <error>]
|
|
|
-// CHECK:STDOUT: return
|
|
|
+// CHECK:STDOUT: <elided>
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: --- fail_todo_import_decl_pointer_return_type.carbon
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: constants {
|
|
|
-// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
|
|
-// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: imports {
|
|
|
@@ -488,29 +497,16 @@ fn F() {
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: file {
|
|
|
-// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
|
|
-// CHECK:STDOUT: .Cpp = imports.%Cpp
|
|
|
-// CHECK:STDOUT: .F = %F.decl
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %Cpp.import_cpp = import_cpp {
|
|
|
-// CHECK:STDOUT: import Cpp "decl_pointer_return_type.h"
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {}
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: fn @F() {
|
|
|
// CHECK:STDOUT: !entry:
|
|
|
// CHECK:STDOUT: %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
|
|
// CHECK:STDOUT: %foo.ref: <error> = name_ref foo, <error> [concrete = <error>]
|
|
|
-// CHECK:STDOUT: return
|
|
|
+// CHECK:STDOUT: <elided>
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: --- fail_todo_import_definition_pointer_return_type.carbon
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: constants {
|
|
|
-// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
|
|
-// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: imports {
|
|
|
@@ -520,21 +516,10 @@ fn F() {
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: file {
|
|
|
-// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
|
|
-// CHECK:STDOUT: .Cpp = imports.%Cpp
|
|
|
-// CHECK:STDOUT: .F = %F.decl
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %Cpp.import_cpp = import_cpp {
|
|
|
-// CHECK:STDOUT: import Cpp "definition_pointer_return_type.h"
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {}
|
|
|
-// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: fn @F() {
|
|
|
// CHECK:STDOUT: !entry:
|
|
|
// CHECK:STDOUT: %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
|
|
// CHECK:STDOUT: %foo.ref: <error> = name_ref foo, <error> [concrete = <error>]
|
|
|
-// CHECK:STDOUT: return
|
|
|
+// CHECK:STDOUT: <elided>
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|