From 5f632cd204b7a85f3a97b6c316c5a34f9fc8193e Mon Sep 17 00:00:00 2001 From: Ronan Date: Fri, 25 Apr 2025 00:48:37 +0200 Subject: Implemented #pragma warning (#6748) * Implemented #pragma warning Based on https://learn.microsoft.com/en-us/cpp/preprocessor/warning?view=msvc-170 * Make #pragma warning work with #includes. - SourceLoc are not sorted by inclusion order. - Construct a mapping from SourceLoc to "absolute locations" that are sorted by inclusion order (roughly represents a location in a raw file with all #include resolved). - The absolute location can be used in the pragma warning timeline * Added preprocessor #pragma warning tests. - Fixed #pragma warning (push / pop) SourceLoc - Fixed unused directiveLoc in #pragma warning parsing * #pragma warning: Added some comments and fixed some typos * Cleaned #pragma warning preprocessor implementation. --------- Co-authored-by: Yong He --- tests/preprocessor/pragma-warning/multi-specifiers-1.slang | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 tests/preprocessor/pragma-warning/multi-specifiers-1.slang (limited to 'tests/preprocessor/pragma-warning/multi-specifiers-1.slang') diff --git a/tests/preprocessor/pragma-warning/multi-specifiers-1.slang b/tests/preprocessor/pragma-warning/multi-specifiers-1.slang new file mode 100644 index 000000000..7c299ed13 --- /dev/null +++ b/tests/preprocessor/pragma-warning/multi-specifiers-1.slang @@ -0,0 +1,14 @@ +//TEST:SIMPLE(filecheck=CHECK): +// #ifdef support + +int64_t GetValue(); + +void f() +{ + int i; +#pragma warning (disable : 30081 ; error : 30081) + // CHECK: ([[# @LINE+1]]): error 30081: + i = GetValue(); +} + +// Test that the last specifier is applied \ No newline at end of file -- cgit v1.2.3