Lines Matching defs:HI
49 [](HoverInfo &HI) {
50 HI.NamespaceScope = "";
51 HI.Name = "foo";
52 HI.Kind = index::SymbolKind::Function;
53 HI.Documentation = "Best foo ever.";
54 HI.Definition = "void foo()";
55 HI.ReturnType = "void";
56 HI.Type = "void ()";
57 HI.Parameters.emplace();
66 [](HoverInfo &HI) {
67 HI.NamespaceScope = "ns1::ns2::";
68 HI.Name = "foo";
69 HI.Kind = index::SymbolKind::Function;
70 HI.Documentation = "Best foo ever.";
71 HI.Definition = "void foo()";
72 HI.ReturnType = "void";
73 HI.Type = "void ()";
74 HI.Parameters.emplace();
85 [](HoverInfo &HI) {
86 HI.NamespaceScope = "ns1::ns2::";
87 HI.LocalScope = "Foo::";
88 HI.Name = "bar";
89 HI.Kind = index::SymbolKind::Field;
90 HI.Definition = "char bar";
91 HI.Type = "char";
92 HI.Offset = 0;
93 HI.Size = 8;
94 HI.Padding = 56;
95 HI.Align = 8;
96 HI.AccessSpecifier = "private";
105 [](HoverInfo &HI) {
106 HI.NamespaceScope = "";
107 HI.LocalScope = "Foo::";
108 HI.Name = "bar";
109 HI.Kind = index::SymbolKind::Field;
110 HI.Definition = "char bar";
111 HI.Type = "char";
112 HI.Size = 8;
113 HI.Padding = 120;
114 HI.Align = 8;
115 HI.AccessSpecifier = "public";
124 [](HoverInfo &HI) {
125 HI.NamespaceScope = "";
126 HI.LocalScope = "Foo::";
127 HI.Name = "x";
128 HI.Kind = index::SymbolKind::Field;
129 HI.Definition = "int x : 1";
130 HI.Type = "int";
131 HI.Offset = 0;
132 HI.Size = 1;
133 HI.Align = 32;
134 HI.AccessSpecifier = "public";
146 [](HoverInfo &HI) {
147 HI.NamespaceScope = "ns1::ns2::";
148 HI.LocalScope = "Foo::foo::";
149 HI.Name = "bar";
150 HI.Kind = index::SymbolKind::Variable;
151 HI.Definition = "int bar";
152 HI.Type = "int";
160 [](HoverInfo &HI) {
161 HI.Name = "__func__";
162 HI.Kind = index::SymbolKind::Variable;
163 HI.Documentation =
165 HI.Value = "\"foo\"";
166 HI.Type = "const char[4]";
174 [](HoverInfo &HI) {
175 HI.Name = "__func__";
176 HI.Kind = index::SymbolKind::Variable;
177 HI.Documentation =
179 HI.Type = "const char[]";
189 [](HoverInfo &HI) {
190 HI.NamespaceScope = "ns1::";
191 HI.LocalScope = "(anonymous struct)::";
192 HI.Name = "bar";
193 HI.Kind = index::SymbolKind::Field;
194 HI.Definition = "char bar";
195 HI.Type = "char";
196 HI.Offset = 0;
197 HI.Size = 8;
198 HI.Align = 8;
199 HI.AccessSpecifier = "public";
205 [](HoverInfo &HI) {
206 HI.NamespaceScope = "";
207 HI.Name = "X";
208 HI.Kind = index::SymbolKind::Struct;
209 HI.Definition = "struct X {}";
210 HI.Size = 8;
211 HI.Align = 8;
218 [](HoverInfo &HI) {
219 HI.NamespaceScope = "";
220 HI.Name = "foo";
221 HI.Kind = index::SymbolKind::Variable;
222 HI.Definition = "Foo<int, char, bool> foo = Foo<int, char, bool>(5)";
223 HI.Type = "Foo<int, char, bool>";
230 [](HoverInfo &HI) {
231 HI.NamespaceScope = "";
232 HI.Name = "vector<int>";
233 HI.Kind = index::SymbolKind::Class;
234 HI.Definition = "template <> class vector<int> {}";
246 [](HoverInfo &HI) {
247 HI.NamespaceScope = "";
248 HI.Name = "Foo";
249 HI.Kind = index::SymbolKind::Class;
250 HI.Definition =
254 HI.TemplateParameters = {
277 [](HoverInfo &HI) {
278 HI.NamespaceScope = "";
279 HI.Name = "foo";
280 HI.Kind = index::SymbolKind::Function;
281 HI.Definition = "template <> void foo<Foo, char, 0, false, <>>()";
282 HI.ReturnType = "void";
283 HI.Type = "void ()";
284 HI.Parameters.emplace();
295 [](HoverInfo &HI) {
296 HI.NamespaceScope = "";
297 HI.Name = "foo";
298 HI.Kind = index::SymbolKind::Function;
299 HI.Definition = "Foo<bool, true, false> foo(int, bool T = false)";
300 HI.ReturnType = "Foo<bool, true, false>";
301 HI.Type = "Foo<bool, true, false> (int, bool)";
302 HI.Parameters = {
315 [](HoverInfo &HI) {
316 HI.NamespaceScope = "";
317 HI.LocalScope = "foo::";
318 HI.Name = "c";
319 HI.Kind = index::SymbolKind::Variable;
320 HI.Definition = "auto *c = &b";
321 HI.Type = "(lambda) **";
322 HI.ReturnType = "bool";
323 HI.Parameters = {
327 return HI;
336 [](HoverInfo &HI) {
337 HI.NamespaceScope = "";
338 HI.LocalScope = "foo::";
339 HI.Name = "bar";
340 HI.Kind = index::SymbolKind::Parameter;
341 HI.Definition = "decltype(lamb) &bar";
342 HI.Type = {"decltype(lamb) &", "(lambda) &"};
343 HI.ReturnType = "bool";
344 HI.Parameters = {
348 return HI;
357 [](HoverInfo &HI) {
358 HI.NamespaceScope = "";
359 HI.LocalScope = "foo::";
360 HI.Name = "bar";
361 HI.Kind = index::SymbolKind::Parameter;
362 HI.Definition = "decltype(lamb) bar";
363 HI.Type = "class (lambda)";
364 HI.ReturnType = "bool";
365 HI.Parameters = {
369 HI.Value = "false";
370 return HI;
380 [](HoverInfo &HI) {
381 HI.NamespaceScope = "";
382 HI.LocalScope = "foo::";
383 HI.Name = "lamb";
384 HI.Kind = index::SymbolKind::Variable;
385 HI.Definition = "auto lamb = [&bar](int T, bool B) -> bool {}";
386 HI.Type = "class (lambda)";
387 HI.ReturnType = "bool";
388 HI.Parameters = {
392 return HI;
400 [](HoverInfo &HI) {
401 HI.NamespaceScope = "";
402 HI.LocalScope = "foo::(anonymous class)::operator()::";
403 HI.Name = "test";
404 HI.Kind = index::SymbolKind::Variable;
405 HI.Definition = "int test";
406 HI.Type = "int";
413 [](HoverInfo &HI) {
414 HI.Name = "X<T *>";
415 HI.NamespaceScope = "";
416 HI.Kind = index::SymbolKind::Class;
417 HI.Definition = "template <typename T> class X<T *> {}";
424 [](HoverInfo &HI) {
425 HI.NamespaceScope = "";
426 HI.Name = "X";
427 HI.LocalScope = "X<T *>::"; // FIXME: X<T *, void>::
428 HI.Kind = index::SymbolKind::Constructor;
429 HI.Definition = "X()";
430 HI.Parameters.emplace();
431 HI.AccessSpecifier = "public";
434 [](HoverInfo &HI) {
435 HI.NamespaceScope = "";
436 HI.Name = "~X";
437 HI.LocalScope = "X::";
438 HI.Kind = index::SymbolKind::Destructor;
439 HI.Definition = "~X()";
440 HI.Parameters.emplace();
441 HI.AccessSpecifier = "private";
444 [](HoverInfo &HI) {
445 HI.NamespaceScope = "";
446 HI.Name = "operator int";
447 HI.LocalScope = "X::";
448 HI.Kind = index::SymbolKind::ConversionFunction;
449 HI.Definition = "operator int()";
450 HI.Parameters.emplace();
451 HI.AccessSpecifier = "private";
454 [](HoverInfo &HI) {
455 HI.NamespaceScope = "";
456 HI.Name = "X";
457 HI.Kind = index::SymbolKind::Class;
458 HI.Definition = "class X {}";
468 [](HoverInfo &HI) {
469 HI.Name = "auto";
470 HI.Kind = index::SymbolKind::TypeAlias;
471 HI.Definition = "S";
480 [](HoverInfo &HI) {
481 HI.Name = "auto";
482 HI.Kind = index::SymbolKind::TypeAlias;
483 HI.Definition = "/* not deduced */";
490 [](HoverInfo &HI) {
491 HI.Name = "auto";
492 HI.Kind = index::SymbolKind::TypeAlias;
493 HI.Definition = "int";
499 [](HoverInfo &HI) {
500 HI.NamespaceScope = "";
501 HI.Name = "F";
502 HI.Kind = index::SymbolKind::Concept;
503 HI.Definition = "template <class T>\nconcept F = true";
511 [](HoverInfo &HI) {
512 HI.Name = "auto";
513 HI.Kind = index::SymbolKind::TypeAlias;
514 HI.Definition = "class(lambda)";
523 [](HoverInfo &HI) {
524 HI.Name = "auto";
525 HI.Kind = index::SymbolKind::TypeAlias;
526 HI.Definition = "Foo<int>";
536 [](HoverInfo &HI) {
537 HI.Name = "auto";
538 HI.Kind = index::SymbolKind::TypeAlias;
539 HI.Definition = "Foo<int>";
547 [](HoverInfo &HI) {
548 HI.NamespaceScope = "";
549 HI.Name = "Fooable";
550 HI.Kind = index::SymbolKind::Concept;
551 HI.Definition = "template <class T>\nconcept Fooable = true";
558 [](HoverInfo &HI) {
559 HI.Name = "TT";
560 HI.Type = "class";
561 HI.AccessSpecifier = "public";
562 HI.NamespaceScope = "";
563 HI.LocalScope = "bar::";
564 HI.Kind = index::SymbolKind::TemplateTypeParm;
565 HI.Definition = "Fooable TT";
571 [](HoverInfo &HI) {
572 HI.NamespaceScope = "";
573 HI.Name = "Fooable";
574 HI.Kind = index::SymbolKind::Concept;
575 HI.Definition = "template <class T>\nconcept Fooable = true";
582 [](HoverInfo &HI) {
583 HI.NamespaceScope = "";
584 HI.Name = "Fooable";
585 HI.Kind = index::SymbolKind::Concept;
586 HI.Definition = "template <class T>\nconcept Fooable = true";
587 HI.Value = "true";
595 [](HoverInfo &HI) {
596 HI.Name = "MACRO";
597 HI.Kind = index::SymbolKind::Macro;
598 HI.Definition = "#define MACRO";
606 [](HoverInfo &HI) {
607 HI.Name = "MACRO";
608 HI.Kind = index::SymbolKind::Macro;
609 HI.Value = "41 (0x29)";
610 HI.Type = "int";
611 HI.Definition = "#define MACRO 41\n\n"
622 [](HoverInfo &HI) {
623 HI.Name = "MACRO";
624 HI.Kind = index::SymbolKind::Macro;
625 HI.Definition = "#define MACRO(x, y, z) void foo(x, y, z)\n\n"
639 [](HoverInfo &HI) {
640 HI.Name = "DECL_STR";
641 HI.Kind = index::SymbolKind::Macro;
642 HI.Type = HoverInfo::PrintedType("const char *");
643 HI.Definition = "#define DECL_STR(NAME, VALUE) const char *v_##NAME = "
654 [](HoverInfo &HI) {
655 HI.Name = "bar";
656 HI.Definition = "int bar = add(1, 2)";
657 HI.Kind = index::SymbolKind::Variable;
658 HI.Type = "int";
659 HI.NamespaceScope = "";
660 HI.Value = "3";
665 [](HoverInfo &HI) {
666 HI.Name = "bar";
667 HI.Definition = "int bar = sizeof(char)";
668 HI.Kind = index::SymbolKind::Variable;
669 HI.Type = "int";
670 HI.NamespaceScope = "";
671 HI.Value = "1";
679 [](HoverInfo &HI) {
680 HI.Name = "bar";
681 HI.Definition = "int bar = Add<1, 2>::result";
682 HI.Kind = index::SymbolKind::Variable;
683 HI.Type = "int";
684 HI.NamespaceScope = "";
685 HI.Value = "3";
691 [](HoverInfo &HI) {
692 HI.Name = "GREEN";
693 HI.NamespaceScope = "";
694 HI.LocalScope = "Color::";
695 HI.Definition = "GREEN = 5";
696 HI.Kind = index::SymbolKind::EnumConstant;
697 HI.Type = "enum Color";
698 HI.Value = "5"; // Numeric on the enumerator name, no hex as small.
705 [](HoverInfo &HI) {
706 HI.Name = "x";
707 HI.NamespaceScope = "";
708 HI.Definition = "Color x = RED";
709 HI.Kind = index::SymbolKind::Variable;
710 HI.Type = "Color";
711 HI.Value = "RED (0xffffff85)"; // Symbolic on an expression.
719 [](HoverInfo &HI) {
720 HI.Name = "result";
721 HI.Definition = "static constexpr int result = a + b";
722 HI.Kind = index::SymbolKind::StaticProperty;
723 HI.Type = "const int";
724 HI.NamespaceScope = "";
725 HI.LocalScope = "Add<1, 2>::";
726 HI.Value = "3";
727 HI.AccessSpecifier = "public";
734 [](HoverInfo &HI) {
735 HI.Name = "answer";
736 HI.Definition = "constexpr my_int answer()";
737 HI.Kind = index::SymbolKind::Function;
738 HI.Type = {"my_int ()", "int ()"};
739 HI.ReturnType = {"my_int", "int"};
740 HI.Parameters.emplace();
741 HI.NamespaceScope = "";
742 HI.Value = "42 (0x2a)";
747 [](HoverInfo &HI) {
748 HI.Name = "bar";
749 HI.Definition = "const char *bar = \"1234\"";
750 HI.Kind = index::SymbolKind::Variable;
751 HI.Type = "const char *";
752 HI.NamespaceScope = "";
753 HI.Value = "&\"1234\"[0]";
765 [](HoverInfo &HI) {
766 HI.Name = "name";
767 HI.Definition = "int name";
768 HI.Kind = index::SymbolKind::Parameter;
769 HI.Type = "int";
770 HI.NamespaceScope = "";
771 HI.LocalScope = "boom::";
793 [](HoverInfo &HI) {
794 HI.Name = "Foo";
795 HI.Kind = index::SymbolKind::Class;
796 HI.NamespaceScope = "ns::a::b::";
797 HI.Definition = "class Foo {}";
807 [](HoverInfo &HI) {
808 HI.Name = "auto";
809 HI.Kind = index::SymbolKind::TypeAlias;
810 HI.Definition = "Foo<X>";
822 [](HoverInfo &HI) {
823 HI.Name = "Foo<int *>";
824 HI.Kind = index::SymbolKind::Class;
825 HI.NamespaceScope = "";
826 HI.Definition = "template <> class Foo<int *>";
829 HI.Documentation = "comment from primary";
835 [](HoverInfo &HI) {
836 HI.Name = "T";
837 HI.Kind = index::SymbolKind::TemplateTypeParm;
838 HI.NamespaceScope = "";
839 HI.Definition = "typename T = int";
840 HI.LocalScope = "foo::";
841 HI.Type = "typename";
842 HI.AccessSpecifier = "public";
848 [](HoverInfo &HI) {
849 HI.Name = "T";
850 HI.Kind = index::SymbolKind::TemplateTemplateParm;
851 HI.NamespaceScope = "";
852 HI.Definition = "template <typename> class T";
853 HI.LocalScope = "foo::";
854 HI.Type = "template <typename> class";
855 HI.AccessSpecifier = "public";
861 [](HoverInfo &HI) {
862 HI.Name = "T";
863 HI.Kind = index::SymbolKind::NonTypeTemplateParm;
864 HI.NamespaceScope = "";
865 HI.Definition = "int T = 5";
866 HI.LocalScope = "foo::";
867 HI.Type = "int";
868 HI.AccessSpecifier = "public";
875 [](HoverInfo &HI) {
876 HI.Name = "y";
877 HI.Kind = index::SymbolKind::InstanceMethod;
878 HI.NamespaceScope = "";
879 HI.Definition = "float y()";
880 HI.LocalScope = "X::";
881 HI.Documentation = "Trivial accessor for `Y`.";
882 HI.Type = "float ()";
883 HI.ReturnType = "float";
884 HI.Parameters.emplace();
885 HI.AccessSpecifier = "public";
891 [](HoverInfo &HI) {
892 HI.Name = "setY";
893 HI.Kind = index::SymbolKind::InstanceMethod;
894 HI.NamespaceScope = "";
895 HI.Definition = "void setY(float v)";
896 HI.LocalScope = "X::";
897 HI.Documentation = "Trivial setter for `Y`.";
898 HI.Type = "void (float)";
899 HI.ReturnType = "void";
900 HI.Parameters.emplace();
901 HI.Parameters->emplace_back();
902 HI.Parameters->back().Type = "float";
903 HI.Parameters->back().Name = "v";
904 HI.AccessSpecifier = "public";
910 [](HoverInfo &HI) {
911 HI.Name = "setY";
912 HI.Kind = index::SymbolKind::InstanceMethod;
913 HI.NamespaceScope = "";
914 HI.Definition = "X &setY(float v)";
915 HI.LocalScope = "X::";
916 HI.Documentation = "Trivial setter for `Y`.";
917 HI.Type = "X &(float)";
918 HI.ReturnType = "X &";
919 HI.Parameters.emplace();
920 HI.Parameters->emplace_back();
921 HI.Parameters->back().Type = "float";
922 HI.Parameters->back().Name = "v";
923 HI.AccessSpecifier = "public";
930 [](HoverInfo &HI) {
931 HI.Name = "setY";
932 HI.Kind = index::SymbolKind::InstanceMethod;
933 HI.NamespaceScope = "";
934 HI.Definition = "void setY(float v)";
935 HI.LocalScope = "X::";
936 HI.Documentation = "Trivial setter for `Y`.";
937 HI.Type = "void (float)";
938 HI.ReturnType = "void";
939 HI.Parameters.emplace();
940 HI.Parameters->emplace_back();
941 HI.Parameters->back().Type = "float";
942 HI.Parameters->back().Name = "v";
943 HI.AccessSpecifier = "public";
950 [](HoverInfo &HI) {
951 HI.Name = "x";
952 HI.Kind = index::SymbolKind::Variable;
953 HI.NamespaceScope = "";
954 HI.Definition = "X x";
955 HI.Type = "X";
959 [](HoverInfo &HI) {
960 HI.Name = "x";
961 HI.Kind = index::SymbolKind::Variable;
962 HI.NamespaceScope = "";
963 HI.Definition = "";
964 HI.Type = "NULL TYPE";
966 HI.AccessSpecifier = "public";
973 [](HoverInfo &HI) {
974 HI.Name = "abc";
975 HI.Kind = index::SymbolKind::Variable;
976 HI.NamespaceScope = "";
977 HI.Definition = "int abc = <recovery - expr>()";
978 HI.Type = "int";
979 HI.AccessSpecifier = "public";
989 [](HoverInfo &HI) {
990 HI.Name = "b";
991 HI.Kind = index::SymbolKind::Variable;
992 HI.NamespaceScope = "";
993 HI.Definition = "int b = 2";
994 HI.LocalScope = "code::";
995 HI.Value = "2";
996 HI.Type = "int";
997 HI.CalleeArgInfo.emplace();
998 HI.CalleeArgInfo->Name = "arg_b";
999 HI.CalleeArgInfo->Type = "int &";
1000 HI.CallPassType = HoverInfo::PassType{PassMode::Ref, false};
1018 [](HoverInfo &HI) {
1019 HI.Name = "a";
1020 HI.Kind = index::SymbolKind::Variable;
1021 HI.NamespaceScope = "";
1022 HI.Definition = "int a = 1";
1023 HI.LocalScope = "code::";
1024 HI.Value = "1";
1025 HI.Type = "int";
1026 HI.CalleeArgInfo.emplace();
1027 HI.CalleeArgInfo->Name = "arg_a";
1028 HI.CalleeArgInfo->Type = "int";
1029 HI.CallPassType = HoverInfo::PassType{PassMode::Value, false};
1039 [](HoverInfo &HI) {
1040 HI.Name = "a";
1041 HI.Kind = index::SymbolKind::Variable;
1042 HI.NamespaceScope = "";
1043 HI.Definition = "int a = 0";
1044 HI.LocalScope = "main::";
1045 HI.Value = "0";
1046 HI.Type = "int";
1047 HI.CalleeArgInfo.emplace();
1048 HI.CalleeArgInfo->Name = "arg";
1049 HI.CalleeArgInfo->Type = "const float &";
1050 HI.CallPassType = HoverInfo::PassType{PassMode::Value, true};
1062 [](HoverInfo &HI) {
1063 HI.Name = "a";
1064 HI.Kind = index::SymbolKind::Variable;
1065 HI.NamespaceScope = "";
1066 HI.Definition = "int a = 0";
1067 HI.LocalScope = "main::";
1068 HI.Value = "0";
1069 HI.Type = "int";
1070 HI.CalleeArgInfo.emplace();
1071 HI.CalleeArgInfo->Name = "arg";
1072 HI.CalleeArgInfo->Type = "const float &";
1073 HI.CallPassType = HoverInfo::PassType{PassMode::Value, true};
1083 [](HoverInfo &HI) {
1084 HI.Name = "literal";
1085 HI.Kind = index::SymbolKind::Unknown;
1086 HI.CalleeArgInfo.emplace();
1087 HI.CalleeArgInfo->Name = "arg_b";
1088 HI.CalleeArgInfo->Type = "const int &";
1089 HI.CallPassType = HoverInfo::PassType{PassMode::ConstRef, false};
1099 [](HoverInfo &HI) {
1100 HI.Name = "expression";
1101 HI.Kind = index::SymbolKind::Unknown;
1102 HI.Type = "int";
1103 HI.Value = "3";
1104 HI.CalleeArgInfo.emplace();
1105 HI.CalleeArgInfo->Name = "arg_b";
1106 HI.CalleeArgInfo->Type = "const int &";
1107 HI.CallPassType = HoverInfo::PassType{PassMode::ConstRef, false};
1116 [](HoverInfo &HI) {
1117 HI.Name = "expression";
1118 HI.Kind = index::SymbolKind::Unknown;
1119 HI.Type = "int";
1120 HI.Value = "3";
1121 HI.CalleeArgInfo.emplace();
1122 HI.CalleeArgInfo->Name = "lhs";
1123 HI.CalleeArgInfo->Type = "int";
1124 HI.CallPassType = HoverInfo::PassType{PassMode::Value, false};
1133 [](HoverInfo &HI) {
1134 HI.Name = "literal";
1135 HI.Kind = index::SymbolKind::Unknown;
1136 HI.CalleeArgInfo.emplace();
1137 HI.CalleeArgInfo->Name = "arg";
1138 HI.CalleeArgInfo->Type = "const float &";
1139 HI.CallPassType = HoverInfo::PassType{PassMode::Value, true};
1153 [](HoverInfo &HI) {
1154 HI.Name = "a";
1155 HI.Kind = index::SymbolKind::Variable;
1156 HI.NamespaceScope = "";
1157 HI.Definition = "int a = 1";
1158 HI.LocalScope = "code::";
1159 HI.Value = "1";
1160 HI.Type = "int";
1161 HI.CalleeArgInfo.emplace();
1162 HI.CalleeArgInfo->Name = "arg_a";
1163 HI.CalleeArgInfo->Type = "int";
1164 HI.CalleeArgInfo->Default = "3";
1165 HI.CallPassType = HoverInfo::PassType{PassMode::Value, false};
1178 [](HoverInfo &HI) {
1179 HI.Name = "x";
1180 HI.Kind = index::SymbolKind::Variable;
1181 HI.NamespaceScope = "";
1182 HI.Definition = "const int x = 0";
1183 HI.LocalScope = "bar::";
1184 HI.Value = "0";
1185 HI.Type = "const int";
1186 HI.CalleeArgInfo.emplace();
1187 HI.CalleeArgInfo->Type = "Foo";
1188 HI.CallPassType = HoverInfo::PassType{PassMode::ConstRef, true};
1196 [](HoverInfo &HI) {
1197 HI.Name = "xx";
1198 HI.Kind = index::SymbolKind::Field;
1199 HI.NamespaceScope = "";
1200 HI.Definition = "int xx";
1201 HI.LocalScope = "Foo::";
1202 HI.Type = "int";
1203 HI.AccessSpecifier = "public";
1211 [](HoverInfo &HI) {
1212 HI.Name = "yy";
1213 HI.Kind = index::SymbolKind::Field;
1214 HI.NamespaceScope = "";
1215 HI.Definition = "int yy";
1216 HI.LocalScope = "Foo::";
1217 HI.Type = "int";
1218 HI.AccessSpecifier = "public";
1229 [](HoverInfo &HI) {
1230 HI.Name = "expression";
1231 HI.Kind = index::SymbolKind::Unknown;
1232 HI.Type = "int[10]";
1233 HI.Value = "{1}";
1241 [](HoverInfo &HI) {
1242 HI.Name = "arr";
1243 HI.Kind = index::SymbolKind::Variable;
1244 HI.Type = {"m_int[Size]", "int[Size]"};
1245 HI.NamespaceScope = "";
1246 HI.Definition = "template <int Size> m_int arr[Size]";
1247 HI.TemplateParameters = {{{"int"}, {"Size"}, std::nullopt}};
1257 [](HoverInfo &HI) {
1258 HI.Name = "arr<4>";
1259 HI.Kind = index::SymbolKind::Variable;
1260 HI.Type = {"m_int[4]", "int[4]"};
1261 HI.NamespaceScope = "";
1262 HI.Definition = "m_int arr[4]";
1275 [](HoverInfo &HI) {
1276 HI.Name = "a";
1277 HI.NamespaceScope = "";
1278 HI.LocalScope = "code::";
1279 HI.Definition = "TestHover<int>::Type a";
1280 HI.Kind = index::SymbolKind::Variable;
1281 HI.Type = {"TestHover<int>::Type", "int"};
1288 [](HoverInfo &HI) {
1289 HI.Name = "foo";
1290 HI.Kind = index::SymbolKind::Function;
1291 HI.NamespaceScope = "";
1292 HI.Definition = "template <typename T> void foo(T arg)";
1293 HI.Type = "void (T)";
1294 HI.ReturnType = "void";
1295 HI.Parameters = {{{"T"}, std::string("arg"), std::nullopt}};
1296 HI.TemplateParameters = {
1304 [](HoverInfo &HI) {
1305 HI.Name = "alias";
1306 HI.NamespaceScope = "";
1307 HI.LocalScope = "";
1308 HI.Kind = index::SymbolKind::TypeAlias;
1309 HI.Definition = "template <typename T> using alias = T";
1310 HI.Type = "T";
1311 HI.TemplateParameters = {
1322 [](HoverInfo &HI) {
1323 HI.Name = "AA";
1324 HI.NamespaceScope = "";
1325 HI.LocalScope = "";
1326 HI.Kind = index::SymbolKind::TypeAlias;
1327 HI.Definition = "template <typename T> using AA = A<T>";
1328 HI.Type = {"A<T>", "T"};
1329 HI.TemplateParameters = {
1338 [](HoverInfo &HI) {
1339 HI.Name = "arr";
1340 HI.NamespaceScope = "";
1341 HI.LocalScope = "";
1342 HI.Kind = index::SymbolKind::Variable;
1343 HI.Definition = "m_int arr[10]";
1344 HI.Type = {"m_int[10]", "int[10]"};
1352 [](HoverInfo &HI) {
1353 HI.Name = "arr";
1354 HI.NamespaceScope = "";
1355 HI.LocalScope = "";
1356 HI.Kind = index::SymbolKind::Variable;
1357 HI.Definition = "extern m_int arr[]";
1358 HI.Type = {"m_int[]", "int[]"};
1369 [](HoverInfo &HI) {
1370 HI.Name = "arr";
1371 HI.NamespaceScope = "";
1372 HI.LocalScope = "Test<Size>::";
1373 HI.AccessSpecifier = "public";
1374 HI.Kind = index::SymbolKind::Field;
1375 HI.Definition = "m_int arr[Size]";
1376 HI.Type = {"m_int[Size]", "int[Size]"};
1386 [](HoverInfo &HI) {
1387 HI.NamespaceScope = "";
1388 HI.LocalScope = "Foo::";
1389 HI.Name = "y";
1390 HI.Kind = index::SymbolKind::Field;
1391 HI.Definition = "char y : 1";
1392 HI.Type = "char";
1393 HI.Offset = 8;
1394 HI.Size = 1;
1395 HI.Padding = 23;
1396 HI.Align = 8;
1397 HI.AccessSpecifier = "public";
1614 [](HoverInfo &HI) {
1615 HI.Name = "expression";
1616 HI.Type = "char";
1617 HI.Value = "65 (0x41)";
1620 [](HoverInfo &HI) {
1621 HI.Name = "string-literal";
1622 HI.Size = 112;
1623 HI.Type = "const char[14]";
1633 [](HoverInfo &HI) {
1634 HI.Name = "bonjour";
1635 HI.Kind = index::SymbolKind::Variable;
1636 HI.NamespaceScope = "";
1637 HI.LocalScope = "main::";
1638 HI.Type = "int";
1639 HI.Definition = "int bonjour";
1650 [](HoverInfo &HI) {
1651 HI.Name = "bonjour";
1652 HI.Kind = index::SymbolKind::Variable;
1653 HI.NamespaceScope = "";
1654 HI.LocalScope = "s::method::";
1655 HI.Type = "int";
1656 HI.Definition = "int bonjour";
1667 [](HoverInfo &HI) {
1668 HI.Name = "MyClass";
1669 HI.Kind = index::SymbolKind::Struct;
1670 HI.NamespaceScope = "ns1::";
1671 HI.Definition = "struct MyClass {}";
1682 [](HoverInfo &HI) {
1683 HI.Name = "MyClass";
1684 HI.Kind = index::SymbolKind::Class;
1685 HI.NamespaceScope = "ns1::";
1686 HI.Definition = "class MyClass {}";
1697 [](HoverInfo &HI) {
1698 HI.Name = "MyUnion";
1699 HI.Kind = index::SymbolKind::Union;
1700 HI.NamespaceScope = "ns1::";
1701 HI.Definition = "union MyUnion {}";
1710 [](HoverInfo &HI) {
1711 HI.Name = "foo";
1712 HI.Kind = index::SymbolKind::Function;
1713 HI.NamespaceScope = "";
1714 HI.Type = "void (int)";
1715 HI.Definition = "void foo(int)";
1716 HI.Documentation = "Function definition via pointer";
1717 HI.ReturnType = "void";
1718 HI.Parameters = {
1729 [](HoverInfo &HI) {
1730 HI.Name = "foo";
1731 HI.Kind = index::SymbolKind::Function;
1732 HI.NamespaceScope = "";
1733 HI.Type = "int (int)";
1734 HI.Definition = "int foo(int)";
1735 HI.Documentation = "Function declaration via call";
1736 HI.ReturnType = "int";
1737 HI.Parameters = {
1749 [](HoverInfo &HI) {
1750 HI.Name = "x";
1751 HI.Kind = index::SymbolKind::Field;
1752 HI.NamespaceScope = "";
1753 HI.LocalScope = "Foo::";
1754 HI.Type = "int";
1755 HI.Definition = "int x";
1765 [](HoverInfo &HI) {
1766 HI.Name = "x";
1767 HI.Kind = index::SymbolKind::Field;
1768 HI.NamespaceScope = "";
1769 HI.LocalScope = "Foo::";
1770 HI.Type = "int";
1771 HI.Definition = "int x = 5";
1780 [](HoverInfo &HI) {
1781 HI.Name = "x";
1782 HI.Kind = index::SymbolKind::StaticProperty;
1783 HI.NamespaceScope = "";
1784 HI.LocalScope = "Foo::";
1785 HI.Type = "int";
1786 HI.Definition = "static int x";
1795 [](HoverInfo &HI) {
1796 HI.Name = "x";
1797 HI.Kind = index::SymbolKind::Field;
1798 HI.NamespaceScope = "";
1799 HI.LocalScope = "Foo::";
1800 HI.Type = "int";
1801 HI.Definition = "int x";
1810 [](HoverInfo &HI) {
1811 HI.Name = "x";
1812 HI.Kind = index::SymbolKind::Field;
1813 HI.NamespaceScope = "";
1814 HI.LocalScope = "Foo::";
1815 HI.Type = "int";
1816 HI.Definition = "int x";
1827 [](HoverInfo &HI) {
1828 HI.Name = "x";
1829 HI.Kind = index::SymbolKind::Field;
1830 HI.NamespaceScope = "";
1831 HI.LocalScope = "Foo::";
1832 HI.Type = "int";
1833 HI.Definition = "int x";
1843 [](HoverInfo &HI) {
1844 HI.Name = "x";
1845 HI.Kind = index::SymbolKind::InstanceMethod;
1846 HI.NamespaceScope = "";
1847 HI.LocalScope = "Foo::";
1848 HI.Type = "int ()";
1849 HI.Definition = "int x()";
1850 HI.ReturnType = "int";
1851 HI.Parameters = std::vector<HoverInfo::Param>{};
1860 [](HoverInfo &HI) {
1861 HI.Name = "x";
1862 HI.Kind = index::SymbolKind::StaticMethod;
1863 HI.NamespaceScope = "";
1864 HI.LocalScope = "Foo::";
1865 HI.Type = "int ()";
1866 HI.Definition = "static int x()";
1867 HI.ReturnType = "int";
1868 HI.Parameters = std::vector<HoverInfo::Param>{};
1877 [](HoverInfo &HI) {
1878 HI.Name = "Foo";
1879 HI.Kind = index::SymbolKind::TypeAlias;
1880 HI.NamespaceScope = "";
1881 HI.Definition = "typedef int Foo";
1882 HI.Type = "int";
1883 HI.Documentation = "Typedef";
1892 [](HoverInfo &HI) {
1893 HI.Name = "Foo";
1894 HI.Kind = index::SymbolKind::TypeAlias;
1895 HI.NamespaceScope = "";
1896 HI.Definition = "typedef struct Bar Foo";
1897 HI.Type = "struct Bar";
1898 HI.Documentation = "Typedef with embedded definition";
1907 [](HoverInfo &HI) {
1908 HI.Name = "ns";
1909 HI.Kind = index::SymbolKind::Namespace;
1910 HI.NamespaceScope = "";
1911 HI.Definition = "namespace ns {}";
1922 [](HoverInfo &HI) {
1923 HI.Name = "foo";
1924 HI.Kind = index::SymbolKind::Variable;
1925 HI.NamespaceScope = "ns::";
1926 HI.Type = "int";
1927 HI.Definition = "int foo";
1939 [](HoverInfo &HI) {
1940 HI.Name = "foo";
1941 HI.Kind = index::SymbolKind::Function;
1942 HI.NamespaceScope = "ns::";
1943 HI.Type = "void ()";
1944 HI.Definition = "void foo()";
1945 HI.Documentation = "";
1946 HI.ReturnType = "void";
1947 HI.Parameters = std::vector<HoverInfo::Param>{};
1955 [](HoverInfo &HI) {
1956 HI.Name = "foo";
1957 HI.Kind = index::SymbolKind::Using;
1958 HI.NamespaceScope = "";
1959 HI.Definition = "using ns::foo";
1966 [](HoverInfo &HI) {
1967 HI.Name = "MACRO";
1968 HI.Value = "0";
1969 HI.Type = "int";
1970 HI.Kind = index::SymbolKind::Macro;
1971 HI.Definition = "#define MACRO 0\n\n"
1980 [](HoverInfo &HI) {
1981 HI.Name = "MACRO";
1982 HI.Kind = index::SymbolKind::Macro;
1983 HI.Definition = "#define MACRO 0";
1994 [](HoverInfo &HI) {
1995 HI.Name = "MACRO";
1996 HI.Kind = index::SymbolKind::Macro;
1997 HI.Definition =
2014 [](HoverInfo &HI) {
2015 HI.Name = "Foo";
2016 HI.Kind = index::SymbolKind::Class;
2017 HI.NamespaceScope = "";
2018 HI.Definition = "class Foo {}";
2019 HI.Documentation = "Forward class declaration";
2027 [](HoverInfo &HI) {
2028 HI.Name = "foo";
2029 HI.Kind = index::SymbolKind::Function;
2030 HI.NamespaceScope = "";
2031 HI.Type = "void ()";
2032 HI.Definition = "void foo()";
2033 HI.Documentation = "Function declaration";
2034 HI.ReturnType = "void";
2035 HI.Parameters = std::vector<HoverInfo::Param>{};
2046 [](HoverInfo &HI) {
2047 HI.Name = "Hello";
2048 HI.Kind = index::SymbolKind::Enum;
2049 HI.NamespaceScope = "";
2050 HI.Definition = "enum Hello {}";
2051 HI.Documentation = "Enum declaration";
2062 [](HoverInfo &HI) {
2063 HI.Name = "ONE";
2064 HI.Kind = index::SymbolKind::EnumConstant;
2065 HI.NamespaceScope = "";
2066 HI.LocalScope = "Hello::";
2067 HI.Type = "enum Hello";
2068 HI.Definition = "ONE";
2069 HI.Value = "0";
2081 [](HoverInfo &HI) {
2082 HI.Name = "ONE";
2083 HI.Kind = index::SymbolKind::EnumConstant;
2084 HI.NamespaceScope = "";
2085 HI.LocalScope = "Hello::";
2086 HI.Type = "enum Hello";
2087 HI.Definition = "ONE";
2088 HI.Value = "0";
2099 [](HoverInfo &HI) {
2100 HI.Name = "ONE";
2101 HI.Kind = index::SymbolKind::EnumConstant;
2102 HI.NamespaceScope = "";
2104 HI.LocalScope = "";
2105 HI.Type = "enum (unnamed)";
2106 HI.Definition = "ONE";
2107 HI.Value = "0";
2116 [](HoverInfo &HI) {
2117 HI.Name = "hey";
2118 HI.Kind = index::SymbolKind::Variable;
2119 HI.NamespaceScope = "";
2120 HI.Type = "int";
2121 HI.Definition = "static int hey = 10";
2122 HI.Documentation = "Global variable";
2124 HI.Value = "10 (0xa)";
2135 [](HoverInfo &HI) {
2136 HI.Name = "hey";
2137 HI.Kind = index::SymbolKind::Variable;
2138 HI.NamespaceScope = "ns1::";
2139 HI.Type = "long long";
2140 HI.Definition = "static long long hey = -36637162602497";
2141 HI.Value = "-36637162602497 (0xffffdeadbeefffff)"; // needs 64 bits
2152 [](HoverInfo &HI) {
2153 HI.Name = "hello";
2154 HI.Kind = index::SymbolKind::Field;
2155 HI.NamespaceScope = "";
2156 HI.LocalScope = "(anonymous struct)::";
2157 HI.Type = "int";
2158 HI.Definition = "int hello";
2168 [](HoverInfo &HI) {
2169 HI.Name = "foo";
2170 HI.Kind = index::SymbolKind::Function;
2171 HI.NamespaceScope = "";
2172 HI.Type = "int ()";
2173 HI.Definition = "template <> int foo<int>()";
2174 HI.Documentation = "Templated function";
2175 HI.ReturnType = "int";
2176 HI.Parameters = std::vector<HoverInfo::Param>{};
2189 [](HoverInfo &HI) {
2190 HI.Name = "def";
2191 HI.Kind = index::SymbolKind::Field;
2192 HI.NamespaceScope = "";
2193 HI.LocalScope = "outer::(anonymous union)::";
2194 HI.Type = "int";
2195 HI.Definition = "int def";
2203 [](HoverInfo &HI) {
2204 HI.Name = "indexSymbol";
2205 HI.Kind = index::SymbolKind::Function;
2206 HI.NamespaceScope = "";
2207 HI.Type = "void ()";
2208 HI.Definition = "void indexSymbol()";
2209 HI.ReturnType = "void";
2210 HI.Parameters = std::vector<HoverInfo::Param>{};
2211 HI.Documentation = "comment from index";
2219 [](HoverInfo &HI) {
2220 HI.Name = "auto";
2221 HI.Kind = index::SymbolKind::TypeAlias;
2222 HI.Definition = "int";
2230 [](HoverInfo &HI) {
2231 HI.Name = "auto";
2232 HI.Kind = index::SymbolKind::TypeAlias;
2233 HI.Definition = "int";
2241 [](HoverInfo &HI) {
2242 HI.Name = "auto";
2243 HI.Kind = index::SymbolKind::TypeAlias;
2244 HI.Definition = "int";
2253 [](HoverInfo &HI) {
2254 HI.Name = "auto";
2255 HI.Kind = index::SymbolKind::TypeAlias;
2256 HI.Definition = "int";
2265 [](HoverInfo &HI) {
2266 HI.Name = "auto";
2267 HI.Kind = index::SymbolKind::TypeAlias;
2268 HI.Definition = "int";
2277 [](HoverInfo &HI) {
2278 HI.Name = "auto";
2279 HI.Kind = index::SymbolKind::TypeAlias;
2280 HI.Definition = "int *";
2293 [](HoverInfo &HI) {
2294 HI.Name = "auto";
2295 HI.Kind = index::SymbolKind::TypeAlias;
2296 HI.Definition = "std::initializer_list<int>";
2304 [](HoverInfo &HI) {
2305 HI.Name = "auto";
2306 HI.Kind = index::SymbolKind::TypeAlias;
2307 HI.Definition = "int";
2315 [](HoverInfo &HI) {
2316 HI.Name = "decltype";
2317 HI.Kind = index::SymbolKind::TypeAlias;
2318 HI.Definition = "int";
2327 [](HoverInfo &HI) {
2328 HI.Name = "decltype";
2329 HI.Kind = index::SymbolKind::TypeAlias;
2330 HI.Definition = "const int";
2340 [](HoverInfo &HI) {
2341 HI.Name = "decltype";
2342 HI.Kind = index::SymbolKind::TypeAlias;
2343 HI.Definition = "const int &";
2353 [](HoverInfo &HI) {
2354 HI.Name = "decltype";
2355 HI.Kind = index::SymbolKind::TypeAlias;
2356 HI.Definition = "int &";
2364 [](HoverInfo &HI) {
2365 HI.Name = "auto";
2366 HI.Kind = index::SymbolKind::TypeAlias;
2367 HI.Definition = "int";
2376 [](HoverInfo &HI) {
2377 HI.Name = "auto";
2378 HI.Kind = index::SymbolKind::TypeAlias;
2379 HI.Definition = "Bar";
2380 HI.Documentation = "auto function return with trailing type";
2389 [](HoverInfo &HI) {
2390 HI.Name = "decltype";
2391 HI.Kind = index::SymbolKind::TypeAlias;
2392 HI.Definition = "Bar";
2393 HI.Documentation = "trailing return type";
2402 [](HoverInfo &HI) {
2403 HI.Name = "auto";
2404 HI.Kind = index::SymbolKind::TypeAlias;
2405 HI.Definition = "Bar";
2406 HI.Documentation = "auto in function return";
2416 [](HoverInfo &HI) {
2417 HI.Name = "auto";
2418 HI.Kind = index::SymbolKind::TypeAlias;
2419 HI.Definition = "Bar";
2420 HI.Documentation = "auto& in function return";
2430 [](HoverInfo &HI) {
2431 HI.Name = "auto";
2432 HI.Kind = index::SymbolKind::TypeAlias;
2433 HI.Definition = "Bar";
2434 HI.Documentation = "auto* in function return";
2444 [](HoverInfo &HI) {
2445 HI.Name = "auto";
2446 HI.Kind = index::SymbolKind::TypeAlias;
2447 HI.Definition = "Bar";
2448 HI.Documentation = "const auto& in function return";
2457 [](HoverInfo &HI) {
2458 HI.Name = "decltype";
2459 HI.Kind = index::SymbolKind::TypeAlias;
2460 HI.Definition = "Bar";
2461 HI.Documentation = "decltype(auto) in function return";
2470 [](HoverInfo &HI) {
2471 HI.Name = "decltype";
2472 HI.Kind = index::SymbolKind::TypeAlias;
2473 HI.Definition = "int &";
2482 [](HoverInfo &HI) {
2483 HI.Name = "decltype";
2484 HI.Kind = index::SymbolKind::TypeAlias;
2485 HI.Definition = "int";
2495 [](HoverInfo &HI) {
2496 HI.Name = "decltype";
2497 HI.Kind = index::SymbolKind::TypeAlias;
2498 HI.Definition = "int &";
2507 [](HoverInfo &HI) {
2508 HI.Name = "decltype";
2509 HI.Kind = index::SymbolKind::TypeAlias;
2510 HI.Definition = "int &";
2519 [](HoverInfo &HI) {
2520 HI.Name = "decltype";
2521 HI.Kind = index::SymbolKind::TypeAlias;
2522 HI.Definition = "int &&";
2532 [](HoverInfo &HI) {
2533 HI.Name = "decltype";
2534 HI.Kind = index::SymbolKind::TypeAlias;
2535 HI.Definition = "int &&";
2547 [](HoverInfo &HI) {
2548 HI.Name = "decltype";
2549 HI.Kind = index::SymbolKind::TypeAlias;
2550 HI.Definition = "Bar";
2551 HI.Documentation =
2562 [](HoverInfo &HI) {
2563 HI.Name = "decltype";
2564 HI.Kind = index::SymbolKind::TypeAlias;
2565 HI.Definition = "int";
2574 [](HoverInfo &HI) {
2575 HI.Name = "decltype";
2576 HI.Kind = index::SymbolKind::TypeAlias;
2577 HI.Definition = "<dependent type>";
2584 [](HoverInfo &HI) {
2585 HI.Name = "auto";
2586 HI.Kind = index::SymbolKind::TypeAlias;
2587 HI.Definition = "int";
2594 [](HoverInfo &HI) {
2595 HI.Name = "test";
2596 HI.Kind = index::SymbolKind::Variable;
2597 HI.NamespaceScope = "";
2598 HI.LocalScope = "test::";
2599 HI.Type = "Test &&";
2600 HI.Definition = "Test &&test = {}";
2607 [](HoverInfo &HI) {
2608 HI.Name = "x";
2609 HI.Kind = index::SymbolKind::Parameter;
2610 HI.NamespaceScope = "";
2611 HI.LocalScope = "Foo::foo::";
2612 HI.Type = "Bar";
2613 HI.Definition = "Bar x = <recovery - expr>()";
2620 [](HoverInfo &HI) {
2621 HI.Name = "auto";
2622 HI.Kind = index::SymbolKind::TypeAlias;
2623 HI.Definition = "int_type // aka: int";
2631 [](HoverInfo &HI) {
2632 HI.Name = "auto";
2633 HI.Kind = index::SymbolKind::TypeAlias;
2634 HI.Definition = "cls_type // aka: cls";
2635 HI.Documentation = "auto on alias";
2643 [](HoverInfo &HI) {
2644 HI.Name = "auto";
2645 HI.Kind = index::SymbolKind::TypeAlias;
2646 HI.Definition = "templ<int>";
2647 HI.Documentation = "auto on alias";
2656 [](HoverInfo &HI) {
2657 HI.Name = "auto";
2658 HI.Kind = index::SymbolKind::TypeAlias;
2659 HI.Definition = "/* not deduced */";
2668 [](HoverInfo &HI) {
2669 HI.Name = "auto";
2670 HI.Kind = index::SymbolKind::TypeAlias;
2671 HI.Definition = "/* not deduced */";
2679 [](HoverInfo &HI) {
2682 HI.Name = "auto";
2683 HI.Kind = index::SymbolKind::TypeAlias;
2684 HI.Definition = "/* not deduced */";
2693 [](HoverInfo &HI) {
2694 HI.Name = "decltype";
2695 HI.Kind = index::SymbolKind::TypeAlias;
2696 HI.Definition = "/* not deduced */";
2706 [](HoverInfo &HI) {
2707 HI.Definition = "int method()";
2708 HI.Kind = index::SymbolKind::InstanceMethod;
2709 HI.NamespaceScope = "";
2710 HI.LocalScope = "cls<int>::";
2711 HI.Name = "method";
2712 HI.Parameters.emplace();
2713 HI.ReturnType = "int";
2714 HI.Type = "int ()";
2721 [](HoverInfo &HI) {
2722 HI.Definition = "cls<cls<cls<int>>> foo";
2723 HI.Kind = index::SymbolKind::Variable;
2724 HI.NamespaceScope = "";
2725 HI.Name = "foo";
2726 HI.Type = "cls<cls<cls<int>>>";
2733 [](HoverInfo &HI) {
2734 HI.Definition = "template <> struct cls<cls<cls<int>>> {}";
2735 HI.Kind = index::SymbolKind::Struct;
2736 HI.NamespaceScope = "";
2737 HI.Name = "cls<cls<cls<int>>>";
2738 HI.Documentation = "type of nested templates.";
2744 [](HoverInfo &HI) {
2745 HI.Definition = "decltype(a) b = a";
2746 HI.Kind = index::SymbolKind::Variable;
2747 HI.NamespaceScope = "";
2748 HI.Name = "b";
2749 HI.Type = "int";
2756 [](HoverInfo &HI) {
2757 HI.Definition = "decltype(c) b = a";
2758 HI.Kind = index::SymbolKind::Variable;
2759 HI.NamespaceScope = "";
2760 HI.Name = "b";
2761 HI.Type = "int";
2767 [](HoverInfo &HI) {
2768 HI.Definition = "const decltype(a) b = a";
2769 HI.Kind = index::SymbolKind::Variable;
2770 HI.NamespaceScope = "";
2771 HI.Name = "b";
2772 HI.Type = "int";
2778 [](HoverInfo &HI) {
2779 HI.Definition = "auto foo(decltype(a) x) -> decltype(a)";
2780 HI.Kind = index::SymbolKind::Function;
2781 HI.NamespaceScope = "";
2782 HI.Name = "foo";
2785 HI.Type = {"auto (decltype(a)) -> decltype(a)",
2787 HI.ReturnType = "int";
2788 HI.Parameters = {{{"int"}, std::string("x"), std::nullopt}};
2795 [](HoverInfo &HI) {
2796 HI.Name = "expression";
2797 HI.Type = "unsigned long";
2798 HI.Value = "1";
2805 [](HoverInfo &HI) {
2806 HI.Name = "expression";
2807 HI.Type = "unsigned long";
2808 HI.Value = "1";
2816 [](HoverInfo &HI) {
2817 HI.Name = "foo";
2818 HI.Kind = index::SymbolKind::Function;
2819 HI.Type = "void (const int &)";
2820 HI.ReturnType = "void";
2821 HI.Parameters = {
2823 HI.Definition = "template <> void foo<int>(const int &)";
2824 HI.NamespaceScope = "";
2832 [](HoverInfo &HI) {
2833 HI.Name = "data";
2834 HI.Type = "char";
2835 HI.Kind = index::SymbolKind::Field;
2836 HI.LocalScope = "ObjC::";
2837 HI.NamespaceScope = "";
2838 HI.Definition = "char data";
2848 [](HoverInfo &HI) {
2849 HI.Name = "MYObject";
2850 HI.Kind = index::SymbolKind::Class;
2851 HI.NamespaceScope = "";
2852 HI.Definition = "@interface MYObject\n@end";
2862 [](HoverInfo &HI) {
2863 HI.Name = "MYObject";
2864 HI.Kind = index::SymbolKind::Class;
2865 HI.NamespaceScope = "";
2866 HI.Definition = "@interface MYObject\n@end";
2879 [](HoverInfo &HI) {
2880 HI.Name = "this";
2881 HI.Definition = "ns::Foo *";
2894 [](HoverInfo &HI) {
2895 HI.Name = "this";
2896 HI.Definition = "const Foo<T> *";
2910 [](HoverInfo &HI) {
2911 HI.Name = "this";
2912 HI.Definition = "Foo<int> *";
2926 [](HoverInfo &HI) {
2927 HI.Name = "this";
2928 HI.Definition = "const Foo<int, F> *";
2943 [](HoverInfo &HI) {
2944 HI.Name = "privateField";
2945 HI.Kind = index::SymbolKind::InstanceProperty;
2946 HI.LocalScope = "MYObject(Private)::";
2947 HI.NamespaceScope = "";
2948 HI.Definition = "@property(nonatomic, assign, unsafe_unretained, "
2962 [](HoverInfo &HI) {
2963 HI.Name = "prop1";
2964 HI.Kind = index::SymbolKind::InstanceProperty;
2965 HI.LocalScope = "MYProtocol::";
2966 HI.NamespaceScope = "";
2967 HI.Definition = "@property(nonatomic, assign, unsafe_unretained, "
2980 [](HoverInfo &HI) {
2981 HI.Name = "MYProtocol";
2982 HI.Kind = index::SymbolKind::Protocol;
2983 HI.NamespaceScope = "";
2984 HI.Definition = "@protocol MYProtocol\n@end";
2997 [](HoverInfo &HI) {
2998 HI.Name = "result";
2999 HI.Definition = "int result = 2";
3000 HI.Kind = index::SymbolKind::Variable;
3001 HI.Type = "int";
3002 HI.LocalScope = "+[Foo(Private) somePrivateMethod]::";
3003 HI.NamespaceScope = "";
3004 HI.Value = "2";
3017 [](HoverInfo &HI) {
3018 HI.Name = "result";
3019 HI.Definition = "int result = 0";
3020 HI.Kind = index::SymbolKind::Variable;
3021 HI.Type = "int";
3022 HI.LocalScope = "-[Foo variadicArgMethod:, ...]::";
3023 HI.NamespaceScope = "";
3024 HI.Value = "0";
3043 [](HoverInfo &HI) {
3044 HI.Name = "foobar";
3045 HI.Kind = index::SymbolKind::Function;
3046 HI.NamespaceScope = "";
3047 HI.Definition = "MyRect foobar()";
3048 HI.Type = {"MyRect ()", "MyRect ()"};
3049 HI.ReturnType = {"MyRect", "MyRect"};
3050 HI.Parameters.emplace();
3055 [](HoverInfo &HI) {
3056 HI.Name = "nonnull";
3057 HI.Kind = index::SymbolKind::Unknown; // FIXME: no suitable value
3058 HI.Definition = "__attribute__((nonnull))";
3059 HI.Documentation = Attr::getDocumentation(attr::NonNull).str();
3083 [](HoverInfo &HI) {
3084 HI.Type = "bool (const Foo &) const noexcept";
3085 HI.Value = "true";
3086 HI.Name = "operator==";
3087 HI.Parameters = {{{"const Foo &"}, std::nullopt, std::nullopt}};
3088 HI.ReturnType = "bool";
3089 HI.Kind = index::SymbolKind::InstanceMethod;
3090 HI.LocalScope = "Foo::";
3091 HI.NamespaceScope = "";
3092 HI.Definition =
3094 HI.Documentation = "";
3152 [](HoverInfo &HI) { HI.Provider = ""; }},
3157 [](HoverInfo &HI) { HI.Provider = "\"foo.h\""; }},
3162 [](HoverInfo &HI) { HI.Provider = "\"foo.h\""; }},
3167 [](HoverInfo &HI) { HI.Provider = ""; }},
3172 [](HoverInfo &HI) { HI.Provider = "\"foo.h\""; }},
3177 [](HoverInfo &HI) { HI.Provider = "\"foo.h\""; }},
3184 [](HoverInfo &HI) { HI.Provider = "\"foo.h\""; }},
3193 [](HoverInfo &HI) { HI.Provider = "\"foo.h\""; }},
3198 [](HoverInfo &HI) { HI.Provider = ""; }},
3234 HoverInfo HI;
3240 EXPECT_EQ(Case.HI.present().asMarkdown(), Case.ExpectedMarkdown);
3255 [](HoverInfo &HI) {
3256 HI.UsedSymbolNames = {"BAR", "Bar", "bar1", "bar2"};
3262 [](HoverInfo &HI) { HI.UsedSymbolNames = {"vector"}; }}};
3414 [](HoverInfo &HI) {
3415 HI.Kind = index::SymbolKind::Unknown;
3416 HI.Name = "X";
3421 [](HoverInfo &HI) {
3422 HI.Kind = index::SymbolKind::NamespaceAlias;
3423 HI.Name = "foo";
3428 [](HoverInfo &HI) {
3429 HI.Kind = index::SymbolKind::Class;
3430 HI.Size = 80;
3431 HI.TemplateParameters = {
3435 HI.Documentation = "documentation";
3436 HI.Definition =
3438 HI.Name = "foo";
3439 HI.NamespaceScope.emplace();
3449 [](HoverInfo &HI) {
3450 HI.Kind = index::SymbolKind::Function;
3451 HI.Name = "foo";
3452 HI.Type = {"type", "c_type"};
3453 HI.ReturnType = {"ret_type", "can_ret_type"};
3454 HI.Parameters.emplace();
3456 HI.Parameters->push_back(P);
3458 HI.Parameters->push_back(P);
3460 HI.Parameters->push_back(P);
3462 HI.Parameters->push_back(P);
3463 HI.NamespaceScope = "ns::";
3464 HI.Definition = "ret_type foo(params) {}";
3479 [](HoverInfo &HI) {
3480 HI.Kind = index::SymbolKind::Field;
3481 HI.LocalScope = "test::Bar::";
3482 HI.Value = "value";
3483 HI.Name = "foo";
3484 HI.Type = {"type", "can_type"};
3485 HI.Definition = "def";
3486 HI.Size = 32;
3487 HI.Offset = 96;
3488 HI.Padding = 32;
3489 HI.Align = 32;
3502 [](HoverInfo &HI) {
3503 HI.Kind = index::SymbolKind::Field;
3504 HI.LocalScope = "test::Bar::";
3505 HI.Value = "value";
3506 HI.Name = "foo";
3507 HI.Type = {"type", "can_type"};
3508 HI.Definition = "def";
3509 HI.Size = 25;
3510 HI.Offset = 35;
3511 HI.Padding = 4;
3512 HI.Align = 64;
3525 [](HoverInfo &HI) {
3526 HI.Kind = index::SymbolKind::Field;
3527 HI.AccessSpecifier = "public";
3528 HI.Name = "foo";
3529 HI.LocalScope = "test::Bar::";
3530 HI.Definition = "def";
3538 [](HoverInfo &HI) {
3539 HI.Definition = "size_t method()";
3540 HI.AccessSpecifier = "protected";
3541 HI.Kind = index::SymbolKind::InstanceMethod;
3542 HI.NamespaceScope = "";
3543 HI.LocalScope = "cls<int>::";
3544 HI.Name = "method";
3545 HI.Parameters.emplace();
3546 HI.ReturnType = {"size_t", "unsigned long"};
3547 HI.Type = {"size_t ()", "unsigned long ()"};
3557 [](HoverInfo &HI) {
3558 HI.Definition = "cls(int a, int b = 5)";
3559 HI.AccessSpecifier = "public";
3560 HI.Kind = index::SymbolKind::Constructor;
3561 HI.NamespaceScope = "";
3562 HI.LocalScope = "cls";
3563 HI.Name = "cls";
3564 HI.Parameters.emplace();
3565 HI.Parameters->emplace_back();
3566 HI.Parameters->back().Type = "int";
3567 HI.Parameters->back().Name = "a";
3568 HI.Parameters->emplace_back();
3569 HI.Parameters->back().Type = "int";
3570 HI.Parameters->back().Name = "b";
3571 HI.Parameters->back().Default = "5";
3583 [](HoverInfo &HI) {
3584 HI.Kind = index::SymbolKind::Union;
3585 HI.AccessSpecifier = "private";
3586 HI.Name = "foo";
3587 HI.NamespaceScope = "ns1::";
3588 HI.Definition = "union foo {}";
3596 [](HoverInfo &HI) {
3597 HI.Kind = index::SymbolKind::Variable;
3598 HI.Name = "foo";
3599 HI.Definition = "int foo = 3";
3600 HI.LocalScope = "test::Bar::";
3601 HI.Value = "3";
3602 HI.Type = "int";
3603 HI.CalleeArgInfo.emplace();
3604 HI.CalleeArgInfo->Name = "arg_a";
3605 HI.CalleeArgInfo->Type = "int";
3606 HI.CalleeArgInfo->Default = "7";
3607 HI.CallPassType = HoverInfo::PassType{PassMode::Value, false};
3619 [](HoverInfo &HI) {
3620 HI.Kind = index::SymbolKind::Variable;
3621 HI.Name = "foo";
3622 HI.CalleeArgInfo.emplace();
3623 HI.CalleeArgInfo->Type = "int";
3624 HI.CallPassType = HoverInfo::PassType{PassMode::Value, false};
3631 [](HoverInfo &HI) {
3632 HI.Kind = index::SymbolKind::Variable;
3633 HI.Name = "foo";
3634 HI.Definition = "int foo = 3";
3635 HI.LocalScope = "test::Bar::";
3636 HI.Value = "3";
3637 HI.Type = "int";
3638 HI.CalleeArgInfo.emplace();
3639 HI.CalleeArgInfo->Name = "arg_a";
3640 HI.CalleeArgInfo->Type = "int";
3641 HI.CalleeArgInfo->Default = "7";
3642 HI.CallPassType = HoverInfo::PassType{PassMode::Ref, false};
3654 [](HoverInfo &HI) {
3655 HI.Kind = index::SymbolKind::Variable;
3656 HI.Name = "foo";
3657 HI.Definition = "int foo = 3";
3658 HI.LocalScope = "test::Bar::";
3659 HI.Value = "3";
3660 HI.Type = "int";
3661 HI.CalleeArgInfo.emplace();
3662 HI.CalleeArgInfo->Name = "arg_a";
3663 HI.CalleeArgInfo->Type = {"alias_int", "int"};
3664 HI.CalleeArgInfo->Default = "7";
3665 HI.CallPassType = HoverInfo::PassType{PassMode::Value, true};
3677 [](HoverInfo &HI) {
3678 HI.Kind = index::SymbolKind::Macro;
3679 HI.Name = "PLUS_ONE";
3680 HI.Definition = "#define PLUS_ONE(X) (X+1)\n\n"
3692 [](HoverInfo &HI) {
3693 HI.Kind = index::SymbolKind::Variable;
3694 HI.Name = "foo";
3695 HI.Definition = "int foo = 3";
3696 HI.LocalScope = "test::Bar::";
3697 HI.Value = "3";
3698 HI.Type = "int";
3699 HI.CalleeArgInfo.emplace();
3700 HI.CalleeArgInfo->Name = "arg_a";
3701 HI.CalleeArgInfo->Type = "int";
3702 HI.CalleeArgInfo->Default = "7";
3703 HI.CallPassType = HoverInfo::PassType{PassMode::ConstRef, true};
3715 [](HoverInfo &HI) {
3716 HI.Name = "stdio.h";
3717 HI.Definition = "/usr/include/stdio.h";
3723 {[](HoverInfo &HI) {
3724 HI.Name = "foo.h";
3725 HI.UsedSymbolNames = {"Foo", "Bar", "Bar"};
3730 {[](HoverInfo &HI) {
3731 HI.Name = "foo.h";
3732 HI.UsedSymbolNames = {"Foo", "Bar", "Baz", "Foobar", "Qux", "Quux"};
3739 HoverInfo HI;
3740 C.Builder(HI);
3744 EXPECT_EQ(HI.present().asPlainText(), C.ExpectedRender);
3836 HoverInfo HI;
3837 HI.Kind = index::SymbolKind::Variable;
3838 HI.Name = "foo";
3840 EXPECT_EQ(HI.present().asMarkdown(), "### variable `foo`");
3846 HoverInfo HI;
3847 HI.Kind = index::SymbolKind::Variable;
3848 HI.Name = "foo";
3849 HI.Value = "val";
3850 HI.Definition = "def";
3862 EXPECT_EQ(HI.present().asMarkdown(), ExpectedMarkdown);
3869 EXPECT_EQ(HI.present().asPlainText(), ExpectedPlaintext);
3896 auto HI = getHover(AST, T.point(), format::getLLVMStyle(), nullptr);
3897 EXPECT_EQ(HI->Documentation, "");
3909 auto HI = getHover(AST, T.point(), format::getLLVMStyle(), nullptr);
3910 ASSERT_TRUE(HI);
3911 EXPECT_EQ(*HI->Value, "&bar");
3936 auto HI = getHover(AST, T.point(), format::getLLVMStyle(), nullptr);
3937 ASSERT_TRUE(HI);
3938 ASSERT_EQ(HI->Value, C.HoverValue);
3996 auto HI = getHover(AST, T.point(), format::getLLVMStyle(), nullptr);
3997 ASSERT_TRUE(HI);
3998 EXPECT_EQ(*HI->Value, "&global_var");
4013 auto HI = getHover(AST, T.point(), format::getLLVMStyle(), nullptr);
4014 ASSERT_TRUE(HI);
4015 EXPECT_EQ(*HI->Value, "&global_var");
4094 [](std::optional<HoverInfo> HI, size_t) {
4095 EXPECT_EQ(HI->Value, "42 (0x2a)");
4096 EXPECT_EQ(HI->Type, HoverInfo::PrintedType("int"));
4104 [](std::optional<HoverInfo> HI, size_t) {
4105 EXPECT_TRUE(HI->Value);
4106 EXPECT_TRUE(HI->Type);
4121 [](std::optional<HoverInfo> HI, size_t) {
4122 EXPECT_TRUE(HI->Value);
4123 EXPECT_TRUE(HI->Type);
4132 [](std::optional<HoverInfo> HI, size_t) {
4133 EXPECT_EQ(HI->Value, "967296 (0xec280)");
4134 EXPECT_EQ(HI->Type, "u64");
4142 [](std::optional<HoverInfo> HI, size_t) {
4143 EXPECT_EQ(HI->Value, "42 (0x2a)");
4144 EXPECT_EQ(HI->Type, "int");
4152 [](std::optional<HoverInfo> HI, size_t) {
4153 EXPECT_EQ(HI->Value, "2");
4154 EXPECT_EQ(HI->Type, "int");
4162 [](std::optional<HoverInfo> HI, size_t) {
4163 EXPECT_FALSE(HI->Value) << HI->Value;
4164 EXPECT_FALSE(HI->Type) << HI->Type;
4172 [](std::optional<HoverInfo> HI, size_t) {
4173 EXPECT_EQ(HI->Value, "2");
4174 EXPECT_EQ(HI->Type, "int");
4184 [](std::optional<HoverInfo> HI, size_t Id) {
4187 EXPECT_EQ(HI->Type, HoverInfo::PrintedType("int[10]"));
4193 EXPECT_FALSE(HI->Type) << HI->Type;
4194 EXPECT_FALSE(HI->Value) << HI->Value;
4209 [](std::optional<HoverInfo> HI, size_t Id) {
4212 EXPECT_FALSE(HI->Value);
4213 EXPECT_EQ(HI->Type, HoverInfo::PrintedType("const (lambda)"));
4216 EXPECT_EQ(HI->Value, "0");
4217 EXPECT_EQ(HI->Type, HoverInfo::PrintedType("u64"));
4220 EXPECT_FALSE(HI);
4223 EXPECT_FALSE(HI->Type) << HI->Type;
4224 EXPECT_FALSE(HI->Value) << HI->Value;