| // Copyright 2023 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Testing normal case |
| #line 6 "raw_ptr_fields_macro.cpp" |
| #define USR_INT int |
| #define USR_INTP int* |
| #define USR_CONST const |
| #define USR_ATTR [[fake_attribute]] |
| #define USR_INTP_FIELD() int* macro_ptr |
| #define USR_TYPE_WITH_SUFFIX(TYP) TYP##Suffix |
| #define USR_SYMBOL(SYM) SYM |
| #define USR_SYMBOL_WITH_SUFFIX(SYM) SYM##_suffix |
| #define USR_EQ = |
| #define USR_NULLPTR nullptr |
| |
| // Testing isInThirdPartyLocation() |
| #line 19 "/src/tools/clang/plugins/tests/third_party/fake_location.cpp" |
| #define TP_INT int |
| #define TP_INTP int* |
| #define TP_CONST const |
| #define TP_ATTR [[fake_attribute]] |
| #define TP_INTP_FIELD() int* macro_ptr |
| #define TP_TYPE_WITH_SUFFIX(TYP) TYP##Suffix |
| #define TP_SYMBOL(SYM) SYM |
| #define TP_SYMBOL_WITH_SUFFIX(SYM) SYM##_suffix |
| #define TP_EQ = |
| #define TP_NULLPTR nullptr |
| |
| // Testing isInLocationListedInFilterFile() |
| #line 32 "/src/tools/clang/plugins/tests/internal/fake_location.cpp" |
| #define IG_INT int |
| #define IG_INTP int* |
| #define IG_CONST const |
| #define IG_ATTR [[fake_attribute]] |
| #define IG_INTP_FIELD() int* macro_ptr |
| #define IG_TYPE_WITH_SUFFIX(TYP) TYP##Suffix |
| #define IG_SYMBOL(SYM) SYM |
| #define IG_SYMBOL_WITH_SUFFIX(SYM) SYM##_suffix |
| #define IG_EQ = |
| #define IG_NULLPTR nullptr |
| |
| // Testing isInGeneratedLocation() |
| #line 45 "/src/tools/clang/plugins/tests/gen/fake_location.cpp" |
| #define GEN_INT int |
| #define GEN_INTP int* |
| #define GEN_CONST const |
| #define GEN_ATTR [[fake_attribute]] |
| #define GEN_INTP_FIELD() int* macro_ptr |
| #define GEN_TYPE_WITH_SUFFIX(TYP) TYP##Suffix |
| #define GEN_SYMBOL(SYM) SYM |
| #define GEN_SYMBOL_WITH_SUFFIX(SYM) SYM##_suffix |
| #define GEN_EQ = |
| #define GEN_NULLPTR nullptr |
| |
| // Testing isSpellingInSystemHeader() |
| #include <raw_ptr_system_test.h> |
| |
| #line 60 "raw_ptr_fields_macro.cpp" |
| class UsrTypSuffix; |
| |
| // These `SYS_***` macro should be defined |
| // in `//tools/clang/plugins/tests/system/raw_ptr_system_test.h`. |
| struct UsrStructWithSysMacro { |
| // Error. |
| int* ptr0; |
| // Error: typeLoc is macro but identifier is written here. |
| SYS_INT* ptr1; |
| // Error: typeLoc is macro but identifier is written here. |
| SYS_INTP ptr2; |
| // Error: typeLoc is macro but identifier is written here. |
| int* SYS_CONST ptr3; |
| // Error: attribute is macro but identifier is written here. |
| int* SYS_ATTR ptr4; |
| // OK: code owner has no control over fieldDecl. |
| SYS_INTP_FIELD(); |
| // Error: typeLoc is macro but identifier is written here. |
| SYS_TYPE_WITH_SUFFIX(UsrTyp) * ptr5; |
| // Error: identifier is defined with macro but it is written here. |
| int* SYS_SYMBOL(ptr6); |
| // OK: the source location for this field declaration will be "<scratch |
| // space>" and the real file path cannot be detected. |
| int* SYS_SYMBOL_WITH_SUFFIX(ptr7); |
| // Error: field is initialized with macro but identifier is written here. |
| int* ptr8 SYS_EQ nullptr; |
| // Error: field is initialized with macro but identifier is written here. |
| int* ptr9 = SYS_NULLPTR; |
| // OK: the source location for this field declaration will be "<scratch |
| // space>" and the real file path cannot be detected. |
| int* SYS_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; |
| }; |
| |
| // These `CMD_***` macro should be defined in command line arguments. |
| // Same as for UsrStructWithSysMacro. |
| struct UsrStructWithCmdMacro { |
| int* ptr0; // Error. |
| CMD_INT* ptr1; // Error. |
| CMD_INTP ptr2; // Error. |
| int* CMD_CONST ptr3; // Error. |
| int* CMD_ATTR ptr4; // Error. |
| CMD_INTP_FIELD(); // OK. |
| CMD_TYPE_WITH_SUFFIX(UsrTyp) * ptr5; // Error. |
| int* CMD_SYMBOL(ptr6); // Error. |
| int* CMD_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 CMD_EQ nullptr; // Error. |
| int* ptr9 = CMD_NULLPTR; // Error. |
| int* CMD_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| struct UsrStructWithUsrMacro { |
| // Error. |
| int* ptr0; |
| // Error: typeLoc is macro but identifier is written here. |
| USR_INT* ptr1; |
| // Error: typeLoc is macro but identifier is written here. |
| USR_INTP ptr2; |
| // Error: typeLoc is macro but identifier is written here. |
| int* USR_CONST ptr3; |
| // Error: attribute is macro but identifier is written here. |
| int* USR_ATTR ptr4; |
| // Error: user has control over the macro. |
| USR_INTP_FIELD(); |
| // Error: user has control over the macro. |
| USR_TYPE_WITH_SUFFIX(UsrTyp) * ptr5; |
| // Error: identifier is defined with macro but it is written here. |
| int* USR_SYMBOL(ptr6); |
| // OK: the source location for this field declaration will be "<scratch |
| // space>" and the real file path cannot be detected. |
| int* USR_SYMBOL_WITH_SUFFIX(ptr7); |
| // Error: field is initialized with macro but identifier is written here. |
| int* ptr8 USR_EQ nullptr; |
| // Error: field is initialized with macro but identifier is written here. |
| int* ptr9 = USR_NULLPTR; |
| // OK: the source location for this field declaration will be "<scratch |
| // space>" and the real file path cannot be detected. |
| int* USR_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; |
| }; |
| |
| // Same as for UsrStructWithSysMacro. |
| struct UsrStructWithThirdPartyMacro { |
| int* ptr0; // Error. |
| TP_INT* ptr1; // Error. |
| TP_INTP ptr2; // Error. |
| int* TP_CONST ptr3; // Error. |
| int* TP_ATTR ptr4; // Error. |
| TP_INTP_FIELD(); // OK. |
| TP_TYPE_WITH_SUFFIX(UsrTyp) * ptr5; // Error. |
| int* TP_SYMBOL(ptr6); // Error. |
| int* TP_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 TP_EQ nullptr; // Error. |
| int* ptr9 = TP_NULLPTR; // Error. |
| int* TP_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| // Same as for UsrStructWithSysMacro. |
| struct UsrStructWithManuallyIgnoredMacro { |
| int* ptr0; // Error. |
| IG_INT* ptr1; // Error. |
| IG_INTP ptr2; // Error. |
| int* IG_CONST ptr3; // Error. |
| int* IG_ATTR ptr4; // Error. |
| IG_INTP_FIELD(); // OK. |
| IG_TYPE_WITH_SUFFIX(UsrTyp) * ptr5; // Error. |
| int* IG_SYMBOL(ptr6); // Error. |
| int* IG_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 IG_EQ nullptr; // Error. |
| int* ptr9 = IG_NULLPTR; // Error. |
| int* IG_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| // Same as for UsrStructWithSysMacro. |
| struct UsrStructWithGeneratedMacro { |
| int* ptr0; // Error. |
| GEN_INT* ptr1; // Error. |
| GEN_INTP ptr2; // Error. |
| int* GEN_CONST ptr3; // Error. |
| int* GEN_ATTR ptr4; // Error. |
| GEN_INTP_FIELD(); // OK. |
| GEN_TYPE_WITH_SUFFIX(UsrTyp) * ptr5; // Error. |
| int* GEN_SYMBOL(ptr6); // Error. |
| int* GEN_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 GEN_EQ nullptr; // Error. |
| int* ptr9 = GEN_NULLPTR; // Error. |
| int* GEN_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| #line 188 "/src/tools/clang/plugins/tests/third_party/fake_location.cpp" |
| class ThirdPartyTypSuffix; |
| |
| struct ThirdPartyStructWithSysMacro { |
| int* ptr0; // OK. |
| SYS_INT* ptr1; // OK. |
| SYS_INTP ptr2; // OK. |
| int* SYS_CONST ptr3; // OK. |
| int* SYS_ATTR ptr4; // OK. |
| SYS_INTP_FIELD(); // OK. |
| SYS_TYPE_WITH_SUFFIX(ThirdPartyTyp) * ptr5; // OK. |
| int* SYS_SYMBOL(ptr6); // OK. |
| int* SYS_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 SYS_EQ nullptr; // OK. |
| int* ptr9 = SYS_NULLPTR; // OK. |
| int* SYS_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| struct ThirdPartyStructWithCmdMacro { |
| int* ptr0; // OK. |
| CMD_INT* ptr1; // OK. |
| CMD_INTP ptr2; // OK. |
| int* CMD_CONST ptr3; // OK. |
| int* CMD_ATTR ptr4; // OK. |
| CMD_INTP_FIELD(); // OK. |
| CMD_TYPE_WITH_SUFFIX(ThirdPartyTyp) * ptr5; // OK. |
| int* CMD_SYMBOL(ptr6); // OK. |
| int* CMD_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 CMD_EQ nullptr; // OK. |
| int* ptr9 = CMD_NULLPTR; // OK. |
| int* CMD_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| struct ThirdPartyStructWithUsrMacro { |
| int* ptr0; // OK. |
| USR_INT* ptr1; // OK. |
| USR_INTP ptr2; // OK. |
| int* USR_CONST ptr3; // OK. |
| int* USR_ATTR ptr4; // OK. |
| USR_INTP_FIELD(); // Error. |
| USR_TYPE_WITH_SUFFIX(ThirdPartyTyp) * ptr5; // OK. |
| int* USR_SYMBOL(ptr6); // OK. |
| int* USR_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 USR_EQ nullptr; // OK. |
| int* ptr9 = USR_NULLPTR; // OK. |
| int* USR_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| struct ThirdPartyStructWithThirdPartyMacro { |
| int* ptr0; // OK. |
| TP_INT* ptr1; // OK. |
| TP_INTP ptr2; // OK. |
| int* TP_CONST ptr3; // OK. |
| int* TP_ATTR ptr4; // OK. |
| TP_INTP_FIELD(); // OK. |
| TP_TYPE_WITH_SUFFIX(ThirdPartyTyp) * ptr5; // OK. |
| int* TP_SYMBOL(ptr6); // OK. |
| int* TP_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 TP_EQ nullptr; // OK. |
| int* ptr9 = TP_NULLPTR; // OK. |
| int* TP_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| struct ThirdPartyStructWithManuallyIgnoredMacro { |
| int* ptr0; // OK. |
| IG_INT* ptr1; // OK. |
| IG_INTP ptr2; // OK. |
| int* IG_CONST ptr3; // OK. |
| int* IG_ATTR ptr4; // OK. |
| IG_INTP_FIELD(); // OK. |
| IG_TYPE_WITH_SUFFIX(ThirdPartyTyp) * ptr5; // OK. |
| int* IG_SYMBOL(ptr6); // OK. |
| int* IG_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 IG_EQ nullptr; // OK. |
| int* ptr9 = IG_NULLPTR; // OK. |
| int* IG_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| struct ThirdPartyStructWithGeneratedMacro { |
| int* ptr0; // OK. |
| GEN_INT* ptr1; // OK. |
| GEN_INTP ptr2; // OK. |
| int* GEN_CONST ptr3; // OK. |
| int* GEN_ATTR ptr4; // OK. |
| GEN_INTP_FIELD(); // OK. |
| GEN_TYPE_WITH_SUFFIX(ThirdPartyTyp) * ptr5; // OK. |
| int* GEN_SYMBOL(ptr6); // OK. |
| int* GEN_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 GEN_EQ nullptr; // OK. |
| int* ptr9 = GEN_NULLPTR; // OK. |
| int* GEN_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| #line 281 "/src/tools/clang/plugins/tests/internal/fake_location.cpp" |
| class ManuallyIgnoredTypSuffix; |
| |
| struct ManuallyIgnoredStructWithSysMacro { |
| int* ptr0; // OK. |
| SYS_INT* ptr1; // OK. |
| SYS_INTP ptr2; // OK. |
| int* SYS_CONST ptr3; // OK. |
| int* SYS_ATTR ptr4; // OK. |
| SYS_INTP_FIELD(); // OK. |
| SYS_TYPE_WITH_SUFFIX(ManuallyIgnoredTyp) * ptr5; // OK. |
| int* SYS_SYMBOL(ptr6); // OK. |
| int* SYS_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 SYS_EQ nullptr; // OK. |
| int* ptr9 = SYS_NULLPTR; // OK. |
| int* SYS_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| struct ManuallyIgnoredStructWithCmdMacro { |
| int* ptr0; // OK. |
| CMD_INT* ptr1; // OK. |
| CMD_INTP ptr2; // OK. |
| int* CMD_CONST ptr3; // OK. |
| int* CMD_ATTR ptr4; // OK. |
| CMD_INTP_FIELD(); // OK. |
| CMD_TYPE_WITH_SUFFIX(ManuallyIgnoredTyp) * ptr5; // OK. |
| int* CMD_SYMBOL(ptr6); // OK. |
| int* CMD_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 CMD_EQ nullptr; // OK. |
| int* ptr9 = CMD_NULLPTR; // OK. |
| int* CMD_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| struct ManuallyIgnoredStructWithUsrMacro { |
| int* ptr0; // OK. |
| USR_INT* ptr1; // OK. |
| USR_INTP ptr2; // OK. |
| int* USR_CONST ptr3; // OK. |
| int* USR_ATTR ptr4; // OK. |
| USR_INTP_FIELD(); // Error. |
| USR_TYPE_WITH_SUFFIX(ManuallyIgnoredTyp) * ptr5; // OK. |
| int* USR_SYMBOL(ptr6); // OK. |
| int* USR_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 USR_EQ nullptr; // OK. |
| int* ptr9 = USR_NULLPTR; // OK. |
| int* USR_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| struct ManuallyIgnoredStructWithThirdPartyMacro { |
| int* ptr0; // OK. |
| TP_INT* ptr1; // OK. |
| TP_INTP ptr2; // OK. |
| int* TP_CONST ptr3; // OK. |
| int* TP_ATTR ptr4; // OK. |
| TP_INTP_FIELD(); // OK. |
| TP_TYPE_WITH_SUFFIX(ManuallyIgnoredTyp) * ptr5; // OK. |
| int* TP_SYMBOL(ptr6); // OK. |
| int* TP_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 TP_EQ nullptr; // OK. |
| int* ptr9 = TP_NULLPTR; // OK. |
| int* TP_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| struct ManuallyIgnoredStructWithManuallyIgnoredMacro { |
| int* ptr0; // OK. |
| IG_INT* ptr1; // OK. |
| IG_INTP ptr2; // OK. |
| int* IG_CONST ptr3; // OK. |
| int* IG_ATTR ptr4; // OK. |
| IG_INTP_FIELD(); // OK. |
| IG_TYPE_WITH_SUFFIX(ManuallyIgnoredTyp) * ptr5; // OK. |
| int* IG_SYMBOL(ptr6); // OK. |
| int* IG_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 IG_EQ nullptr; // OK. |
| int* ptr9 = IG_NULLPTR; // OK. |
| int* IG_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| struct ManuallyIgnoredStructWithGeneratedMacro { |
| int* ptr0; // OK. |
| GEN_INT* ptr1; // OK. |
| GEN_INTP ptr2; // OK. |
| int* GEN_CONST ptr3; // OK. |
| int* GEN_ATTR ptr4; // OK. |
| GEN_INTP_FIELD(); // OK. |
| GEN_TYPE_WITH_SUFFIX(ManuallyIgnoredTyp) * ptr5; // OK. |
| int* GEN_SYMBOL(ptr6); // OK. |
| int* GEN_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 GEN_EQ nullptr; // OK. |
| int* ptr9 = GEN_NULLPTR; // OK. |
| int* GEN_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| #line 374 "/src/tools/clang/plugins/tests/gen/fake_location.cpp" |
| class GeneratedTypSuffix; |
| |
| struct GeneratedStructWithSysMacro { |
| int* ptr0; // OK. |
| SYS_INT* ptr1; // OK. |
| SYS_INTP ptr2; // OK. |
| int* SYS_CONST ptr3; // OK. |
| int* SYS_ATTR ptr4; // OK. |
| SYS_INTP_FIELD(); // OK. |
| SYS_TYPE_WITH_SUFFIX(GeneratedTyp) * ptr5; // OK. |
| int* SYS_SYMBOL(ptr6); // OK. |
| int* SYS_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 SYS_EQ nullptr; // OK. |
| int* ptr9 = SYS_NULLPTR; // OK. |
| int* SYS_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| struct GeneratedStructWithCmdMacro { |
| int* ptr0; // OK. |
| CMD_INT* ptr1; // OK. |
| CMD_INTP ptr2; // OK. |
| int* CMD_CONST ptr3; // OK. |
| int* CMD_ATTR ptr4; // OK. |
| CMD_INTP_FIELD(); // OK. |
| CMD_TYPE_WITH_SUFFIX(GeneratedTyp) * ptr5; // OK. |
| int* CMD_SYMBOL(ptr6); // OK. |
| int* CMD_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 CMD_EQ nullptr; // OK. |
| int* ptr9 = CMD_NULLPTR; // OK. |
| int* CMD_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| struct GeneratedStructWithUsrMacro { |
| int* ptr0; // OK. |
| USR_INT* ptr1; // OK. |
| USR_INTP ptr2; // OK. |
| int* USR_CONST ptr3; // OK. |
| int* USR_ATTR ptr4; // OK. |
| USR_INTP_FIELD(); // Error. |
| USR_TYPE_WITH_SUFFIX(GeneratedTyp) * ptr5; // OK. |
| int* USR_SYMBOL(ptr6); // OK. |
| int* USR_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 USR_EQ nullptr; // OK. |
| int* ptr9 = USR_NULLPTR; // OK. |
| int* USR_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| struct GeneratedStructWithThirdPartyMacro { |
| int* ptr0; // OK. |
| TP_INT* ptr1; // OK. |
| TP_INTP ptr2; // OK. |
| int* TP_CONST ptr3; // OK. |
| int* TP_ATTR ptr4; // OK. |
| TP_INTP_FIELD(); // OK. |
| TP_TYPE_WITH_SUFFIX(GeneratedTyp) * ptr5; // OK. |
| int* TP_SYMBOL(ptr6); // OK. |
| int* TP_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 TP_EQ nullptr; // OK. |
| int* ptr9 = TP_NULLPTR; // OK. |
| int* TP_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| struct GeneratedStructWithManuallyIgnoredMacro { |
| int* ptr0; // OK. |
| IG_INT* ptr1; // OK. |
| IG_INTP ptr2; // OK. |
| int* IG_CONST ptr3; // OK. |
| int* IG_ATTR ptr4; // OK. |
| IG_INTP_FIELD(); // OK. |
| IG_TYPE_WITH_SUFFIX(GeneratedTyp) * ptr5; // OK. |
| int* IG_SYMBOL(ptr6); // OK. |
| int* IG_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 IG_EQ nullptr; // OK. |
| int* ptr9 = IG_NULLPTR; // OK. |
| int* IG_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |
| |
| struct GeneratedStructWithGeneratedMacro { |
| int* ptr0; // OK. |
| GEN_INT* ptr1; // OK. |
| GEN_INTP ptr2; // OK. |
| int* GEN_CONST ptr3; // OK. |
| int* GEN_ATTR ptr4; // OK. |
| GEN_INTP_FIELD(); // OK. |
| GEN_TYPE_WITH_SUFFIX(GeneratedTyp) * ptr5; // OK. |
| int* GEN_SYMBOL(ptr6); // OK. |
| int* GEN_SYMBOL_WITH_SUFFIX(ptr7); // OK. |
| int* ptr8 GEN_EQ nullptr; // OK. |
| int* ptr9 = GEN_NULLPTR; // OK. |
| int* GEN_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. |
| }; |