diff options
author | Jun Zhang <jun@junz.org> | 2023-05-16 21:21:52 +0800 |
---|---|---|
committer | Jun Zhang <jun@junz.org> | 2023-05-16 21:21:52 +0800 |
commit | 7158fd381a0bc0222195d6a07ebb42ea57957bda (patch) | |
tree | 478d3238a459fe992133a3e0d3983845abca20ad /clang/unittests | |
parent | f2bb57c19455e77fd71be782f9ee9092f31bd2a9 (diff) | |
download | llvm-7158fd381a0bc0222195d6a07ebb42ea57957bda.tar.gz |
Revert "[clang-repl] Introduce Value to capture expression results"
This reverts commit a423b7f1d7ca8b263af85944f57a69aa08fc942c.
See https://lab.llvm.org/buildbot/#/changes/95083
Diffstat (limited to 'clang/unittests')
-rw-r--r-- | clang/unittests/Interpreter/CMakeLists.txt | 2 | ||||
-rw-r--r-- | clang/unittests/Interpreter/InterpreterTest.cpp | 100 |
2 files changed, 2 insertions, 100 deletions
diff --git a/clang/unittests/Interpreter/CMakeLists.txt b/clang/unittests/Interpreter/CMakeLists.txt index 698494b9897f..1a099dbbfe59 100644 --- a/clang/unittests/Interpreter/CMakeLists.txt +++ b/clang/unittests/Interpreter/CMakeLists.txt @@ -22,5 +22,3 @@ target_link_libraries(ClangReplInterpreterTests PUBLIC if(NOT WIN32) add_subdirectory(ExceptionTests) endif() - -export_executable_symbols(ClangReplInterpreterTests) diff --git a/clang/unittests/Interpreter/InterpreterTest.cpp b/clang/unittests/Interpreter/InterpreterTest.cpp index 1662de406e40..d555911a8945 100644 --- a/clang/unittests/Interpreter/InterpreterTest.cpp +++ b/clang/unittests/Interpreter/InterpreterTest.cpp @@ -17,7 +17,6 @@ #include "clang/AST/Mangle.h" #include "clang/Frontend/CompilerInstance.h" #include "clang/Frontend/TextDiagnosticPrinter.h" -#include "clang/Interpreter/Value.h" #include "clang/Sema/Lookup.h" #include "clang/Sema/Sema.h" @@ -34,11 +33,6 @@ using namespace clang; #define CLANG_INTERPRETER_NO_SUPPORT_EXEC #endif -int Global = 42; -// JIT reports symbol not found on Windows without the visibility attribute. -REPL_EXTERNAL_VISIBILITY int getGlobal() { return Global; } -REPL_EXTERNAL_VISIBILITY void setGlobal(int val) { Global = val; } - namespace { using Args = std::vector<const char *>; static std::unique_ptr<Interpreter> @@ -282,7 +276,8 @@ TEST(IncrementalProcessing, InstantiateTemplate) { std::vector<const char *> Args = {"-fno-delayed-template-parsing"}; std::unique_ptr<Interpreter> Interp = createInterpreter(Args); - llvm::cantFail(Interp->Parse("extern \"C\" int printf(const char*,...);" + llvm::cantFail(Interp->Parse("void* operator new(__SIZE_TYPE__, void* __p);" + "extern \"C\" int printf(const char*,...);" "class A {};" "struct B {" " template<typename T>" @@ -320,95 +315,4 @@ TEST(IncrementalProcessing, InstantiateTemplate) { free(NewA); } -TEST(InterpreterTest, Value) { - std::unique_ptr<Interpreter> Interp = createInterpreter(); - - Value V1; - llvm::cantFail(Interp->ParseAndExecute("int x = 42;")); - llvm::cantFail(Interp->ParseAndExecute("x", &V1)); - EXPECT_TRUE(V1.isValid()); - EXPECT_TRUE(V1.hasValue()); - EXPECT_EQ(V1.getInt(), 42); - EXPECT_EQ(V1.convertTo<int>(), 42); - EXPECT_TRUE(V1.getType()->isIntegerType()); - EXPECT_EQ(V1.getKind(), Value::K_Int); - EXPECT_FALSE(V1.isManuallyAlloc()); - - Value V2; - llvm::cantFail(Interp->ParseAndExecute("double y = 3.14;")); - llvm::cantFail(Interp->ParseAndExecute("y", &V2)); - EXPECT_TRUE(V2.isValid()); - EXPECT_TRUE(V2.hasValue()); - EXPECT_EQ(V2.getDouble(), 3.14); - EXPECT_EQ(V2.convertTo<double>(), 3.14); - EXPECT_TRUE(V2.getType()->isFloatingType()); - EXPECT_EQ(V2.getKind(), Value::K_Double); - EXPECT_FALSE(V2.isManuallyAlloc()); - - Value V3; - llvm::cantFail(Interp->ParseAndExecute( - "struct S { int* p; S() { p = new int(42); } ~S() { delete p; }};")); - llvm::cantFail(Interp->ParseAndExecute("S{}", &V3)); - EXPECT_TRUE(V3.isValid()); - EXPECT_TRUE(V3.hasValue()); - EXPECT_TRUE(V3.getType()->isRecordType()); - EXPECT_EQ(V3.getKind(), Value::K_PtrOrObj); - EXPECT_TRUE(V3.isManuallyAlloc()); - - Value V4; - llvm::cantFail(Interp->ParseAndExecute("int getGlobal();")); - llvm::cantFail(Interp->ParseAndExecute("void setGlobal(int);")); - llvm::cantFail(Interp->ParseAndExecute("getGlobal()", &V4)); - EXPECT_EQ(V4.getInt(), 42); - EXPECT_TRUE(V4.getType()->isIntegerType()); - - Value V5; - // Change the global from the compiled code. - setGlobal(43); - llvm::cantFail(Interp->ParseAndExecute("getGlobal()", &V5)); - EXPECT_EQ(V5.getInt(), 43); - EXPECT_TRUE(V5.getType()->isIntegerType()); - - // Change the global from the interpreted code. - llvm::cantFail(Interp->ParseAndExecute("setGlobal(44);")); - EXPECT_EQ(getGlobal(), 44); - - Value V6; - llvm::cantFail(Interp->ParseAndExecute("void foo() {}")); - llvm::cantFail(Interp->ParseAndExecute("foo()", &V6)); - EXPECT_TRUE(V6.isValid()); - EXPECT_FALSE(V6.hasValue()); - EXPECT_TRUE(V6.getType()->isVoidType()); - EXPECT_EQ(V6.getKind(), Value::K_Void); - EXPECT_FALSE(V2.isManuallyAlloc()); - - Value V7; - llvm::cantFail(Interp->ParseAndExecute("foo", &V7)); - EXPECT_TRUE(V7.isValid()); - EXPECT_TRUE(V7.hasValue()); - EXPECT_TRUE(V7.getType()->isFunctionProtoType()); - EXPECT_EQ(V7.getKind(), Value::K_PtrOrObj); - EXPECT_FALSE(V7.isManuallyAlloc()); - - Value V8; - llvm::cantFail(Interp->ParseAndExecute("struct SS{ void f() {} };")); - llvm::cantFail(Interp->ParseAndExecute("&SS::f", &V8)); - EXPECT_TRUE(V8.isValid()); - EXPECT_TRUE(V8.hasValue()); - EXPECT_TRUE(V8.getType()->isMemberFunctionPointerType()); - EXPECT_EQ(V8.getKind(), Value::K_PtrOrObj); - EXPECT_TRUE(V8.isManuallyAlloc()); - - Value V9; - llvm::cantFail(Interp->ParseAndExecute("struct A { virtual int f(); };")); - llvm::cantFail( - Interp->ParseAndExecute("struct B : A { int f() { return 42; }};")); - llvm::cantFail(Interp->ParseAndExecute("int (B::*ptr)() = &B::f;")); - llvm::cantFail(Interp->ParseAndExecute("ptr", &V9)); - EXPECT_TRUE(V9.isValid()); - EXPECT_TRUE(V9.hasValue()); - EXPECT_TRUE(V9.getType()->isMemberFunctionPointerType()); - EXPECT_EQ(V9.getKind(), Value::K_PtrOrObj); - EXPECT_TRUE(V9.isManuallyAlloc()); -} } // end anonymous namespace |