Skip to content

Commit

Permalink
[unittests] Add a fixture for Sema unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
xedin committed Oct 13, 2020
1 parent 0b456ba commit 9239692
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 0 deletions.
1 change: 1 addition & 0 deletions unittests/CMakeLists.txt
Expand Up @@ -12,6 +12,7 @@ if(SWIFT_INCLUDE_TOOLS)
add_subdirectory(Localization)
add_subdirectory(IDE)
add_subdirectory(Parse)
add_subdirectory(Sema)
add_subdirectory(SwiftDemangle)
add_subdirectory(Syntax)
if(SWIFT_BUILD_SYNTAXPARSERLIB)
Expand Down
7 changes: 7 additions & 0 deletions unittests/Sema/CMakeLists.txt
@@ -0,0 +1,7 @@

add_swift_unittest(swiftSemaTests
SemaFixture.cpp)

target_link_libraries(swiftSemaTests
PRIVATE
swiftSema)
36 changes: 36 additions & 0 deletions unittests/Sema/SemaFixture.cpp
@@ -0,0 +1,36 @@
//===--- SemaFixture.cpp - Helper for setting up Sema context --------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//

#include "SemaFixture.h"
#include "swift/AST/Module.h"
#include "swift/AST/ParseRequests.h"
#include "swift/Strings.h"
#include "swift/Subsystems.h"

using namespace swift;
using namespace swift::unittest;

SemaTest::SemaTest()
: Context(*ASTContext::get(LangOpts, TypeCheckerOpts, SearchPathOpts,
ClangImporterOpts, SourceMgr, Diags)) {
registerParseRequestFunctions(Context.evaluator);
registerTypeCheckerRequestFunctions(Context.evaluator);
auto stdlibID = Context.getIdentifier(STDLIB_NAME);
auto *module = ModuleDecl::create(stdlibID, Context);
Context.addLoadedModule(module);

FileForLookups = new (Context) SourceFile(*module, SourceFileKind::Library,
/*buffer*/ None);
module->addFile(*FileForLookups);

DC = module;
}
51 changes: 51 additions & 0 deletions unittests/Sema/SemaFixture.h
@@ -0,0 +1,51 @@
//===--- SemaFixture.h - Helper for setting up Sema context -----*- C++ -*-===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//

#include "swift/AST/ASTContext.h"
#include "swift/AST/DiagnosticEngine.h"
#include "swift/AST/Module.h"
#include "swift/AST/SourceFile.h"
#include "swift/Basic/LangOptions.h"
#include "swift/Basic/SourceManager.h"
#include "llvm/Support/Host.h"
#include "gtest/gtest.h"

namespace swift {
namespace unittest {

class SemaTestBase : public ::testing::Test {
public:
LangOptions LangOpts;
TypeCheckerOptions TypeCheckerOpts;
SearchPathOptions SearchPathOpts;
ClangImporterOptions ClangImporterOpts;
SourceManager SourceMgr;
DiagnosticEngine Diags;

SemaTestBase() : Diags(SourceMgr) {
LangOpts.Target = llvm::Triple(llvm::sys::getProcessTriple());
}
};

/// Owns an ASTContext and the associated types.
class SemaTest : public SemaTestBase {
SourceFile *FileForLookups;

public:
ASTContext &Context;
DeclContext *DC;

SemaTest();
};

} // end namespace unittest
} // end namespace swift

0 comments on commit 9239692

Please sign in to comment.