118 lines · cpp
1// RUN: rm -rf %t2// RUN: mkdir -p %t3// RUN: split-file %s %t4// RUN: %clang_cc1 -std=c++20 %t/foo.cppm -emit-module-interface -o %t/foo.pcm5// RUN: %clang_cc1 -std=c++20 -fprebuilt-module-path=%t %t/use.cpp -dump-minimization-hints=%t/decls6// RUN: cat %t/decls7// RUN: cat %t/decls | FileCheck -check-prefix=RANGE %s8// RANGE:{9// RANGE-NEXT:"required_ranges": [10// RANGE-NEXT: {11// RANGE-NEXT: "file": "{{.+}}foo.cppm",12// RANGE-NEXT: "range": [13// RANGE-NEXT: {14// RANGE-NEXT: "from": {15// RANGE-NEXT: "line": 3,16// RANGE-NEXT: "column": 117// RANGE-NEXT: },18// RANGE-NEXT: "to": {19// RANGE-NEXT: "line": 3,20// RANGE-NEXT: "column": 2221// RANGE-NEXT: }22// RANGE-NEXT: },23// RANGE-NEXT: {24// RANGE-NEXT: "from": {25// RANGE-NEXT: "line": 4,26// RANGE-NEXT: "column": 327// RANGE-NEXT: },28// RANGE-NEXT: "to": {29// RANGE-NEXT: "line": 4,30// RANGE-NEXT: "column": 931// RANGE-NEXT: }32// RANGE-NEXT: },33// RANGE-NEXT: {34// RANGE-NEXT: "from": {35// RANGE-NEXT: "line": 4,36// RANGE-NEXT: "column": 1037// RANGE-NEXT: },38// RANGE-NEXT: "to": {39// RANGE-NEXT: "line": 4,40// RANGE-NEXT: "column": 4341// RANGE-NEXT: }42// RANGE-NEXT: },43// RANGE-NEXT: {44// RANGE-NEXT: "from": {45// RANGE-NEXT: "line": 6,46// RANGE-NEXT: "column": 147// RANGE-NEXT: },48// RANGE-NEXT: "to": {49// RANGE-NEXT: "line": 6,50// RANGE-NEXT: "column": 251// RANGE-NEXT: }52// RANGE-NEXT: },53// RANGE-NEXT: {54// RANGE-NEXT: "from": {55// RANGE-NEXT: "line": 8,56// RANGE-NEXT: "column": 157// RANGE-NEXT: },58// RANGE-NEXT: "to": {59// RANGE-NEXT: "line": 8,60// RANGE-NEXT: "column": 761// RANGE-NEXT: }62// RANGE-NEXT: },63// RANGE-NEXT: {64// RANGE-NEXT: "from": {65// RANGE-NEXT: "line": 8,66// RANGE-NEXT: "column": 867// RANGE-NEXT: },68// RANGE-NEXT: "to": {69// RANGE-NEXT: "line": 8,70// RANGE-NEXT: "column": 2571// RANGE-NEXT: }72// RANGE-NEXT: },73// RANGE-NEXT: {74// RANGE-NEXT: "from": {75// RANGE-NEXT: "line": 9,76// RANGE-NEXT: "column": 377// RANGE-NEXT: },78// RANGE-NEXT: "to": {79// RANGE-NEXT: "line": 9,80// RANGE-NEXT: "column": 3681// RANGE-NEXT: }82// RANGE-NEXT: },83// RANGE-NEXT: {84// RANGE-NEXT: "from": {85// RANGE-NEXT: "line": 11,86// RANGE-NEXT: "column": 187// RANGE-NEXT: },88// RANGE-NEXT: "to": {89// RANGE-NEXT: "line": 11,90// RANGE-NEXT: "column": 291// RANGE-NEXT: }92// RANGE-NEXT: }93// RANGE-NEXT: ]94// RANGE-NEXT: }95// RANGE-NEXT:]96// RANGE-NEXT:}97 98//--- foo.cppm99export module foo;100 101namespace piecemeal { // line 3102 export int used(int n) { return n + 1; }103 export int unused(int n) { return n + 2; }104}105 106export namespace whole { // line 8107 int used(int n) { return n + 1; }108 int unused(int n) { return n + 3; }109} // line 11110 111//--- use.cpp112import foo;113 114int main() {115 piecemeal::used(4); // only one of the functions used from each namespace.116 whole::used(4);117}118