llvm-project
366 строк · 7.3 Кб
1// RUN: rm -rf %t
2// RUN: split-file %s %t
3// RUN: sed -e "s@INPUT_DIR@%{/t:regex_replacement}@g" \
4// RUN: %t/reference.output.json.in >> %t/reference.output.json
5// RUN: %clang_cc1 -extract-api --pretty-sgf -triple arm64-apple-macosx \
6// RUN: -x c++-header %t/input.h -o %t/output.json -verify
7
8// Generator version is not consistent across test runs, normalize it.
9// RUN: sed -e "s@\"generator\": \".*\"@\"generator\": \"?\"@g" \
10// RUN: %t/output.json >> %t/output-normalized.json
11// RUN: diff %t/reference.output.json %t/output-normalized.json
12
13//--- input.h
14class Foo {15private:16int a;17mutable int b;18
19protected:20int c;21
22public:23int d;24};25/// expected-no-diagnostics
26
27//--- reference.output.json.in
28{
29"metadata": {30"formatVersion": {31"major": 0,32"minor": 5,33"patch": 334},35"generator": "?"36},37"module": {38"name": "",39"platform": {40"architecture": "arm64",41"operatingSystem": {42"minimumVersion": {43"major": 11,44"minor": 0,45"patch": 046},47"name": "macosx"48},49"vendor": "apple"50}51},52"relationships": [53{54"kind": "memberOf",55"source": "c:@S@Foo@FI@a",56"target": "c:@S@Foo",57"targetFallback": "Foo"58},59{60"kind": "memberOf",61"source": "c:@S@Foo@FI@b",62"target": "c:@S@Foo",63"targetFallback": "Foo"64},65{66"kind": "memberOf",67"source": "c:@S@Foo@FI@c",68"target": "c:@S@Foo",69"targetFallback": "Foo"70},71{72"kind": "memberOf",73"source": "c:@S@Foo@FI@d",74"target": "c:@S@Foo",75"targetFallback": "Foo"76}77],78"symbols": [79{80"accessLevel": "public",81"declarationFragments": [82{83"kind": "keyword",84"spelling": "class"85},86{87"kind": "text",88"spelling": " "89},90{91"kind": "identifier",92"spelling": "Foo"93},94{95"kind": "text",96"spelling": ";"97}98],99"identifier": {100"interfaceLanguage": "c++",101"precise": "c:@S@Foo"102},103"kind": {104"displayName": "Class",105"identifier": "c++.class"106},107"location": {108"position": {109"character": 6,110"line": 0111},112"uri": "file://INPUT_DIR/input.h"113},114"names": {115"navigator": [116{117"kind": "identifier",118"spelling": "Foo"119}120],121"subHeading": [122{123"kind": "identifier",124"spelling": "Foo"125}126],127"title": "Foo"128},129"pathComponents": [130"Foo"131]132},133{134"accessLevel": "private",135"declarationFragments": [136{137"kind": "typeIdentifier",138"preciseIdentifier": "c:I",139"spelling": "int"140},141{142"kind": "text",143"spelling": " "144},145{146"kind": "identifier",147"spelling": "a"148},149{150"kind": "text",151"spelling": ";"152}153],154"identifier": {155"interfaceLanguage": "c++",156"precise": "c:@S@Foo@FI@a"157},158"kind": {159"displayName": "Instance Property",160"identifier": "c++.property"161},162"location": {163"position": {164"character": 6,165"line": 2166},167"uri": "file://INPUT_DIR/input.h"168},169"names": {170"navigator": [171{172"kind": "identifier",173"spelling": "a"174}175],176"subHeading": [177{178"kind": "identifier",179"spelling": "a"180}181],182"title": "a"183},184"pathComponents": [185"Foo",186"a"187]188},189{190"accessLevel": "private",191"declarationFragments": [192{193"kind": "keyword",194"spelling": "mutable"195},196{197"kind": "text",198"spelling": " "199},200{201"kind": "typeIdentifier",202"preciseIdentifier": "c:I",203"spelling": "int"204},205{206"kind": "text",207"spelling": " "208},209{210"kind": "identifier",211"spelling": "b"212},213{214"kind": "text",215"spelling": ";"216}217],218"identifier": {219"interfaceLanguage": "c++",220"precise": "c:@S@Foo@FI@b"221},222"kind": {223"displayName": "Instance Property",224"identifier": "c++.property"225},226"location": {227"position": {228"character": 14,229"line": 3230},231"uri": "file://INPUT_DIR/input.h"232},233"names": {234"navigator": [235{236"kind": "identifier",237"spelling": "b"238}239],240"subHeading": [241{242"kind": "identifier",243"spelling": "b"244}245],246"title": "b"247},248"pathComponents": [249"Foo",250"b"251]252},253{254"accessLevel": "protected",255"declarationFragments": [256{257"kind": "typeIdentifier",258"preciseIdentifier": "c:I",259"spelling": "int"260},261{262"kind": "text",263"spelling": " "264},265{266"kind": "identifier",267"spelling": "c"268},269{270"kind": "text",271"spelling": ";"272}273],274"identifier": {275"interfaceLanguage": "c++",276"precise": "c:@S@Foo@FI@c"277},278"kind": {279"displayName": "Instance Property",280"identifier": "c++.property"281},282"location": {283"position": {284"character": 6,285"line": 6286},287"uri": "file://INPUT_DIR/input.h"288},289"names": {290"navigator": [291{292"kind": "identifier",293"spelling": "c"294}295],296"subHeading": [297{298"kind": "identifier",299"spelling": "c"300}301],302"title": "c"303},304"pathComponents": [305"Foo",306"c"307]308},309{310"accessLevel": "public",311"declarationFragments": [312{313"kind": "typeIdentifier",314"preciseIdentifier": "c:I",315"spelling": "int"316},317{318"kind": "text",319"spelling": " "320},321{322"kind": "identifier",323"spelling": "d"324},325{326"kind": "text",327"spelling": ";"328}329],330"identifier": {331"interfaceLanguage": "c++",332"precise": "c:@S@Foo@FI@d"333},334"kind": {335"displayName": "Instance Property",336"identifier": "c++.property"337},338"location": {339"position": {340"character": 6,341"line": 9342},343"uri": "file://INPUT_DIR/input.h"344},345"names": {346"navigator": [347{348"kind": "identifier",349"spelling": "d"350}351],352"subHeading": [353{354"kind": "identifier",355"spelling": "d"356}357],358"title": "d"359},360"pathComponents": [361"Foo",362"d"363]364}365]366}
367