llvm-project/clang/test/Index/targeted-annotation.c
Aaron Ballman 19e984ef8f Properly print unnamed TagDecl objects in diagnostics
The diagnostics engine is very smart about being passed a NamedDecl to
print as part of a diagnostic; it gets the "right" form of the name,
quotes it properly, etc. However, the result of using an unnamed tag
declaration was to print '' instead of anything useful.

This patch causes us to print the same information we'd have gotten if
we had printed the type of the declaration rather than the name of it,
as that's the most relevant information we can display.

Differential Revision: https://reviews.llvm.org/D134813
2022-10-14 08:18:28 -04:00

100 lines
5.5 KiB
C

#include "targeted-top.h"
#include "targeted-preamble.h"
int LocalVar1;
int LocalVar2;
// RUN: c-index-test -write-pch %t.h.pch %S/targeted-top.h
// RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -test-annotate-tokens=%s:1:1:7:1 %s -include %t.h \
// RUN: -Xclang -error-on-deserialized-decl=NestedVar1 \
// RUN: -Xclang -error-on-deserialized-decl=TopVar \
// RUN: | FileCheck %s -check-prefix=LOCAL
// RUN: env CINDEXTEST_FAILONERROR=1 CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_NO_CACHING=1 \
// RUN: c-index-test -test-annotate-tokens=%s:1:1:7:1 %s -include %t.h \
// RUN: -Xclang -error-on-deserialized-decl=PreambleVar \
// RUN: -Xclang -error-on-deserialized-decl=NestedVar1 \
// RUN: -Xclang -error-on-deserialized-decl=TopVar \
// RUN: | FileCheck %s -check-prefix=LOCAL
// LOCAL: Punctuation: "#" [2:1 - 2:2] inclusion directive=targeted-top.h
// LOCAL: Identifier: "include" [2:2 - 2:9] inclusion directive=targeted-top.h
// LOCAL: Literal: ""targeted-top.h"" [2:10 - 2:26] inclusion directive=targeted-top.h
// LOCAL: Punctuation: "#" [3:1 - 3:2] inclusion directive=targeted-preamble.h
// LOCAL: Identifier: "include" [3:2 - 3:9] inclusion directive=targeted-preamble.h
// LOCAL: Literal: ""targeted-preamble.h"" [3:10 - 3:31] inclusion directive=targeted-preamble.h
// LOCAL: Keyword: "int" [5:1 - 5:4] VarDecl=LocalVar1:5:5
// LOCAL: Identifier: "LocalVar1" [5:5 - 5:14] VarDecl=LocalVar1:5:5
// LOCAL: Punctuation: ";" [5:14 - 5:15]
// LOCAL: Keyword: "int" [6:1 - 6:4] VarDecl=LocalVar2:6:5
// LOCAL: Identifier: "LocalVar2" [6:5 - 6:14] VarDecl=LocalVar2:6:5
// LOCAL: Punctuation: ";" [6:14 - 6:15]
// RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -test-annotate-tokens=%S/targeted-fields.h:1:1:4:1 %s -include %t.h \
// RUN: -Xclang -error-on-deserialized-decl=NestedVar1 \
// RUN: -Xclang -error-on-deserialized-decl=TopVar \
// RUN: | FileCheck %s -check-prefix=FIELD
// RUN: env CINDEXTEST_FAILONERROR=1 CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_NO_CACHING=1 \
// RUN: c-index-test -test-annotate-tokens=%S/targeted-fields.h:1:1:4:1 %s -include %t.h \
// RUN: -Xclang -error-on-deserialized-decl=PreambleVar \
// RUN: -Xclang -error-on-deserialized-decl=NestedVar1 \
// RUN: -Xclang -error-on-deserialized-decl=TopVar \
// RUN: | FileCheck %s -check-prefix=FIELD
// FIELD: Keyword: "int" [2:3 - 2:6] FieldDecl=z:2:7 (Definition)
// FIELD: Identifier: "z" [2:7 - 2:8] FieldDecl=z:2:7 (Definition)
// FIELD: Punctuation: ";" [2:8 - 2:9] StructDecl=Vector:13:9 (Definition)
// FIELD: Keyword: "int" [3:3 - 3:6] FieldDecl=w:3:7 (Definition)
// FIELD: Identifier: "w" [3:7 - 3:8] FieldDecl=w:3:7 (Definition)
// FIELD: Punctuation: ";" [3:8 - 3:9] StructDecl=Vector:13:9 (Definition)
// RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -test-annotate-tokens=%S/targeted-nested1.h:1:1:3:1 %s -include %t.h \
// RUN: -Xclang -error-on-deserialized-decl=TopVar \
// RUN: | FileCheck %s -check-prefix=NESTED
// RUN: env CINDEXTEST_FAILONERROR=1 CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_NO_CACHING=1 \
// RUN: c-index-test -test-annotate-tokens=%S/targeted-nested1.h:1:1:3:1 %s -include %t.h \
// RUN: -Xclang -error-on-deserialized-decl=PreambleVar \
// RUN: -Xclang -error-on-deserialized-decl=TopVar \
// RUN: | FileCheck %s -check-prefix=NESTED
// NESTED: Keyword: "extern" [2:1 - 2:7]
// NESTED: Keyword: "int" [2:8 - 2:11] VarDecl=NestedVar1:2:12
// NESTED: Identifier: "NestedVar1" [2:12 - 2:22] VarDecl=NestedVar1:2:12
// NESTED: Punctuation: ";" [2:22 - 2:23]
// RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -test-annotate-tokens=%S/targeted-top.h:1:1:12:1 %s -include %t.h \
// RUN: -Xclang -error-on-deserialized-decl=NestedVar1 \
// RUN: -Xclang -error-on-deserialized-decl=vector_get_x \
// RUN: | FileCheck %s -check-prefix=TOP
// RUN: env CINDEXTEST_FAILONERROR=1 CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_NO_CACHING=1 \
// RUN: c-index-test -test-annotate-tokens=%S/targeted-top.h:1:1:12:1 %s -include %t.h \
// RUN: -Xclang -error-on-deserialized-decl=PreambleVar \
// RUN: -Xclang -error-on-deserialized-decl=NestedVar1 \
// RUN: -Xclang -error-on-deserialized-decl=vector_get_x \
// RUN: | FileCheck %s -check-prefix=TOP
// TOP: Punctuation: "#" [2:1 - 2:2] preprocessing directive=
// TOP: Identifier: "ifndef" [2:2 - 2:8] preprocessing directive=
// TOP: Identifier: "TARGETED_TOP_H" [2:9 - 2:23] preprocessing directive=
// TOP: Punctuation: "#" [3:1 - 3:2] preprocessing directive=
// TOP: Identifier: "define" [3:2 - 3:8] preprocessing directive=
// TOP: Identifier: "TARGETED_TOP_H" [3:9 - 3:23] macro definition=TARGETED_TOP_H
// TOP: Punctuation: "#" [5:1 - 5:2] inclusion directive=targeted-nested1.h
// TOP: Identifier: "include" [5:2 - 5:9] inclusion directive=targeted-nested1.h
// TOP: Literal: ""targeted-nested1.h"" [5:10 - 5:30] inclusion directive=targeted-nested1.h
// TOP: Keyword: "enum" [7:1 - 7:5] EnumDecl=enum (unnamed at {{.*}}):7:1 (Definition)
// TOP: Punctuation: "{" [7:6 - 7:7] EnumDecl=enum (unnamed at {{.*}}):7:1 (Definition)
// TOP: Identifier: "VALUE" [8:3 - 8:8] EnumConstantDecl=VALUE:8:3 (Definition)
// TOP: Punctuation: "=" [8:9 - 8:10] EnumConstantDecl=VALUE:8:3 (Definition)
// TOP: Literal: "3" [8:11 - 8:12] IntegerLiteral=
// TOP: Punctuation: "}" [9:1 - 9:2] EnumDecl=enum (unnamed at {{.*}}):7:1 (Definition)
// TOP: Punctuation: ";" [9:2 - 9:3]
// TOP: Keyword: "extern" [11:1 - 11:7]
// TOP: Keyword: "int" [11:8 - 11:11] VarDecl=TopVar:11:12
// TOP: Identifier: "TopVar" [11:12 - 11:18] VarDecl=TopVar:11:12
// TOP: Punctuation: ";" [11:18 - 11:19]