Author: Vassil Vassilev Date: 2024-09-20T10:07:46+03:00 New Revision: 96ae7c4f1aa02cb10455dda22abbb0b3b2ceaa6b
URL: https://github.com/llvm/llvm-project/commit/96ae7c4f1aa02cb10455dda22abbb0b3b2ceaa6b DIFF: https://github.com/llvm/llvm-project/commit/96ae7c4f1aa02cb10455dda22abbb0b3b2ceaa6b.diff LOG: [clang-repl] Implement continuation for preprocessor directives. (#107552) Added: Modified: clang/test/Interpreter/multiline.cpp clang/tools/clang-repl/ClangRepl.cpp Removed: ################################################################################ diff --git a/clang/test/Interpreter/multiline.cpp b/clang/test/Interpreter/multiline.cpp index 054e61a7e3d62e..0f5ef48417f133 100644 --- a/clang/test/Interpreter/multiline.cpp +++ b/clang/test/Interpreter/multiline.cpp @@ -1,6 +1,8 @@ // REQUIRES: host-supports-jit // UNSUPPORTED: system-aix -// RUN: cat %s | clang-repl | FileCheck %s +// RUN: cat %s | clang-repl -Xcc -Xclang -Xcc -verify | FileCheck %s + +// expected-no-diagnostics extern "C" int printf(const char*,...); int i = \ @@ -17,8 +19,7 @@ void f(int x) \ f(i); // CHECK: x=12 -// FIXME: Support preprocessor directives. -// #if 0 \ -// #error "Can't be!" \ -// #endif +#if 0 \ + #error "Can't be!" \ +#endif diff --git a/clang/tools/clang-repl/ClangRepl.cpp b/clang/tools/clang-repl/ClangRepl.cpp index 9cfc70462893dd..08c54e6cafa901 100644 --- a/clang/tools/clang-repl/ClangRepl.cpp +++ b/clang/tools/clang-repl/ClangRepl.cpp @@ -232,8 +232,10 @@ int main(int argc, const char **argv) { llvm::StringRef L = *Line; L = L.trim(); if (L.ends_with("\\")) { - // FIXME: Support #ifdef X \ ... Input += L.drop_back(1); + // If it is a preprocessor directive, new lines matter. + if (L.starts_with('#')) + Input += "\n"; LE.setPrompt("clang-repl... "); continue; } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits