diff --git a/.clangd b/.clangd index b686d61ca940..01e1c7279a5f 100644 --- a/.clangd +++ b/.clangd @@ -9,3 +9,13 @@ Diagnostics: # `unused-includes`: has false positives, reporting includes unused when # they are used. Suppress: [unused-includes] + +--- + +# Suppress common diagnostics for x-macro files. +If: + PathMatch: .*\.def +Diagnostics: + Suppress: + # The `#error` requiring a macro definition. + - pp_hash_error diff --git a/common/enum_base_test.def b/common/enum_base_test.def index be5e3034fc49..f107666a5b22 100644 --- a/common/enum_base_test.def +++ b/common/enum_base_test.def @@ -8,6 +8,7 @@ #ifndef CARBON_ENUM_BASE_TEST_KIND #error "Must define the x-macro to use this file." +#define CARBON_ENUM_BASE_TEST_KIND(Name) #endif CARBON_ENUM_BASE_TEST_KIND(Beep) diff --git a/toolchain/diagnostics/check_diagnostics.py b/toolchain/diagnostics/check_diagnostics.py index 2263e6d9b9e2..c995e6c7b9f5 100755 --- a/toolchain/diagnostics/check_diagnostics.py +++ b/toolchain/diagnostics/check_diagnostics.py @@ -43,7 +43,7 @@ def load_diagnostic_kind() -> Set[str]: """ path = Path("toolchain/diagnostics/diagnostic_kind.def") content = path.read_text() - decls = set(re.findall(r"CARBON_DIAGNOSTIC_KIND\((.+)\)", content)) + decls = set(re.findall(r"^\s+CARBON_DIAGNOSTIC_KIND\((.+)\)", content)) return decls.difference(IGNORED) diff --git a/toolchain/diagnostics/diagnostic_kind.def b/toolchain/diagnostics/diagnostic_kind.def index 375e0581043c..63407891ba50 100644 --- a/toolchain/diagnostics/diagnostic_kind.def +++ b/toolchain/diagnostics/diagnostic_kind.def @@ -14,6 +14,7 @@ #ifndef CARBON_DIAGNOSTIC_KIND #error "Must define the x-macro to use this file." +#define CARBON_DIAGNOSTIC_KIND(Name) #endif // ============================================================================ diff --git a/toolchain/parse/node_kind.def b/toolchain/parse/node_kind.def index d5d63499473e..ca521438ad40 100644 --- a/toolchain/parse/node_kind.def +++ b/toolchain/parse/node_kind.def @@ -31,6 +31,7 @@ #if !defined(CARBON_PARSE_NODE_KIND) #error "Must define CARBON_PARSE_NODE_KIND family x-macros to use this file." +#define CARBON_PARSE_NODE_KIND(Name) #endif // This is expected to be used with something like: diff --git a/toolchain/parse/state.def b/toolchain/parse/state.def index a05c9906c8f6..3616b4475b05 100644 --- a/toolchain/parse/state.def +++ b/toolchain/parse/state.def @@ -36,6 +36,7 @@ #ifndef CARBON_PARSE_STATE #error "Must define the x-macro to use this file." +#define CARBON_PARSE_STATE(Name) #endif // Use CARBON_PARSE_STATE_VARIANTSN(State, Variant1, Variant2, ...) to generate diff --git a/toolchain/sem_ir/builtin_function_kind.def b/toolchain/sem_ir/builtin_function_kind.def index 8ae651d977b3..6c224f2fa1cb 100644 --- a/toolchain/sem_ir/builtin_function_kind.def +++ b/toolchain/sem_ir/builtin_function_kind.def @@ -14,6 +14,7 @@ #if !defined(CARBON_SEM_IR_BUILTIN_FUNCTION_KIND) #error \ "Must define CARBON_SEM_IR_BUILTIN_FUNCTION_KIND x-macro to use this file." +#define CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(Name) #endif CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(None) diff --git a/toolchain/sem_ir/inst_kind.def b/toolchain/sem_ir/inst_kind.def index 5798d8db1ea9..f2bd563fdaa6 100644 --- a/toolchain/sem_ir/inst_kind.def +++ b/toolchain/sem_ir/inst_kind.def @@ -13,6 +13,7 @@ #ifndef CARBON_SEM_IR_INST_KIND #error "Must define the x-macro to use this file." +#define CARBON_SEM_IR_INST_KIND(Name) #endif // For each instruction kind declared here there is a matching definition in