aboutsummaryrefslogtreecommitdiff
path: root/clang/unittests/Serialization/ModuleCacheTest.cpp
diff options
context:
space:
mode:
authorJan Svoboda <jan_svoboda@apple.com>2025-05-01 07:31:30 -0700
committerGitHub <noreply@github.com>2025-05-01 07:31:30 -0700
commitb69dcb873476cd8e7d3f6f9ffd5b6d0bbe1a3a17 (patch)
tree91fa427a131edc9cd16c9bef896a64083442218e /clang/unittests/Serialization/ModuleCacheTest.cpp
parent0009a1783490a8ff69251a0ec7df1891a427cfb0 (diff)
downloadllvm-b69dcb873476cd8e7d3f6f9ffd5b6d0bbe1a3a17.zip
llvm-b69dcb873476cd8e7d3f6f9ffd5b6d0bbe1a3a17.tar.gz
llvm-b69dcb873476cd8e7d3f6f9ffd5b6d0bbe1a3a17.tar.bz2
[clang][frontend] Require invocation to construct `CompilerInstance` (#137668)
This PR makes it so that `CompilerInvocation` needs to be provided to `CompilerInstance` on construction. There are a couple of benefits in my view: * Making it impossible to mis-use some `CompilerInstance` APIs. For example there are cases, where `createDiagnostics()` was called before `setInvocation()`, causing the `DiagnosticEngine` to use the default-constructed `DiagnosticOptions` instead of the intended ones. * This shrinks `CompilerInstance`'s state space. * This makes it possible to access **the** invocation in `CompilerInstance`'s constructor (to be used in a follow-up).
Diffstat (limited to 'clang/unittests/Serialization/ModuleCacheTest.cpp')
-rw-r--r--clang/unittests/Serialization/ModuleCacheTest.cpp14
1 files changed, 6 insertions, 8 deletions
diff --git a/clang/unittests/Serialization/ModuleCacheTest.cpp b/clang/unittests/Serialization/ModuleCacheTest.cpp
index 6ceee1c..38003e9 100644
--- a/clang/unittests/Serialization/ModuleCacheTest.cpp
+++ b/clang/unittests/Serialization/ModuleCacheTest.cpp
@@ -119,9 +119,8 @@ TEST_F(ModuleCacheTest, CachedModuleNewPath) {
std::shared_ptr<CompilerInvocation> Invocation =
createInvocationAndEnableFree(Args, CIOpts);
ASSERT_TRUE(Invocation);
- CompilerInstance Instance;
+ CompilerInstance Instance(std::move(Invocation));
Instance.setDiagnostics(Diags.get());
- Instance.setInvocation(Invocation);
SyntaxOnlyAction Action;
ASSERT_TRUE(Instance.ExecuteAction(Action));
ASSERT_FALSE(Diags->hasErrorOccurred());
@@ -142,10 +141,10 @@ TEST_F(ModuleCacheTest, CachedModuleNewPath) {
std::shared_ptr<CompilerInvocation> Invocation2 =
createInvocationAndEnableFree(Args2, CIOpts);
ASSERT_TRUE(Invocation2);
- CompilerInstance Instance2(Instance.getPCHContainerOperations(),
+ CompilerInstance Instance2(std::move(Invocation2),
+ Instance.getPCHContainerOperations(),
&Instance.getModuleCache());
Instance2.setDiagnostics(Diags.get());
- Instance2.setInvocation(Invocation2);
SyntaxOnlyAction Action2;
ASSERT_FALSE(Instance2.ExecuteAction(Action2));
ASSERT_TRUE(Diags->hasErrorOccurred());
@@ -169,9 +168,8 @@ TEST_F(ModuleCacheTest, CachedModuleNewPathAllowErrors) {
std::shared_ptr<CompilerInvocation> Invocation =
createInvocationAndEnableFree(Args, CIOpts);
ASSERT_TRUE(Invocation);
- CompilerInstance Instance;
+ CompilerInstance Instance(std::move(Invocation));
Instance.setDiagnostics(Diags.get());
- Instance.setInvocation(Invocation);
SyntaxOnlyAction Action;
ASSERT_TRUE(Instance.ExecuteAction(Action));
ASSERT_FALSE(Diags->hasErrorOccurred());
@@ -186,10 +184,10 @@ TEST_F(ModuleCacheTest, CachedModuleNewPathAllowErrors) {
std::shared_ptr<CompilerInvocation> Invocation2 =
createInvocationAndEnableFree(Args2, CIOpts);
ASSERT_TRUE(Invocation2);
- CompilerInstance Instance2(Instance.getPCHContainerOperations(),
+ CompilerInstance Instance2(std::move(Invocation2),
+ Instance.getPCHContainerOperations(),
&Instance.getModuleCache());
Instance2.setDiagnostics(Diags.get());
- Instance2.setInvocation(Invocation2);
SyntaxOnlyAction Action2;
ASSERT_FALSE(Instance2.ExecuteAction(Action2));
ASSERT_TRUE(Diags->hasErrorOccurred());