Refactor factory functions for TypeCheckerBuilders. · google/cel-cpp@fe432f3

@@ -22,9 +22,11 @@

2222

#include "absl/status/status_matchers.h"

2323

#include "base/ast_internal/ast_impl.h"

2424

#include "base/ast_internal/expr.h"

25+

#include "checker/checker_options.h"

2526

#include "checker/internal/test_ast_helpers.h"

2627

#include "checker/type_checker.h"

2728

#include "checker/type_checker_builder.h"

29+

#include "checker/type_checker_builder_factory.h"

2830

#include "checker/validation_result.h"

2931

#include "common/ast.h"

3032

#include "common/constant.h"

@@ -50,27 +52,27 @@ using AstType = cel::ast_internal::Type;

50525153

TEST(StandardLibraryTest, StandardLibraryAddsDecls) {

5254

ASSERT_OK_AND_ASSIGN(

53-

TypeCheckerBuilder builder,

55+

std::unique_ptr<TypeCheckerBuilder> builder,

5456

CreateTypeCheckerBuilder(GetSharedTestingDescriptorPool()));

55-

EXPECT_THAT(builder.AddLibrary(StandardCheckerLibrary()), IsOk());

56-

EXPECT_THAT(std::move(builder).Build(), IsOk());

57+

EXPECT_THAT(builder->AddLibrary(StandardCheckerLibrary()), IsOk());

58+

EXPECT_THAT(std::move(*builder).Build(), IsOk());

5759

}

58605961

TEST(StandardLibraryTest, StandardLibraryErrorsIfAddedTwice) {

6062

ASSERT_OK_AND_ASSIGN(

61-

TypeCheckerBuilder builder,

63+

std::unique_ptr<TypeCheckerBuilder> builder,

6264

CreateTypeCheckerBuilder(GetSharedTestingDescriptorPool()));

63-

EXPECT_THAT(builder.AddLibrary(StandardCheckerLibrary()), IsOk());

64-

EXPECT_THAT(builder.AddLibrary(StandardCheckerLibrary()),

65+

EXPECT_THAT(builder->AddLibrary(StandardCheckerLibrary()), IsOk());

66+

EXPECT_THAT(builder->AddLibrary(StandardCheckerLibrary()),

6567

StatusIs(absl::StatusCode::kAlreadyExists));

6668

}

67696870

TEST(StandardLibraryTest, ComprehensionVarsIndirectCyclicParamAssignability) {

6971

google::protobuf::Arena arena;

7072

ASSERT_OK_AND_ASSIGN(

71-

TypeCheckerBuilder builder,

73+

std::unique_ptr<TypeCheckerBuilder> builder,

7274

CreateTypeCheckerBuilder(GetSharedTestingDescriptorPool()));

73-

ASSERT_THAT(builder.AddLibrary(StandardCheckerLibrary()), IsOk());

75+

ASSERT_THAT(builder->AddLibrary(StandardCheckerLibrary()), IsOk());

74767577

// Note: this is atypical -- parameterized variables aren't well supported

7678

// outside of built-in syntax.

@@ -83,13 +85,13 @@ TEST(StandardLibraryTest, ComprehensionVarsIndirectCyclicParamAssignability) {

8385

Type list_type = ListType(&arena, TypeParamType("V"));

8486

Type map_type = MapType(&arena, TypeParamType("K"), TypeParamType("V"));

858786-

ASSERT_THAT(builder.AddVariable(MakeVariableDecl("list_var", list_type)),

88+

ASSERT_THAT(builder->AddVariable(MakeVariableDecl("list_var", list_type)),

8789

IsOk());

88-

ASSERT_THAT(builder.AddVariable(MakeVariableDecl("map_var", map_type)),

90+

ASSERT_THAT(builder->AddVariable(MakeVariableDecl("map_var", map_type)),

8991

IsOk());

90929193

ASSERT_OK_AND_ASSIGN(std::unique_ptr<TypeChecker> type_checker,

92-

std::move(builder).Build());

94+

std::move(*builder).Build());

93959496

ASSERT_OK_AND_ASSIGN(

9597

auto ast, checker_internal::MakeTestParsedAst(

@@ -108,10 +110,10 @@ class StandardLibraryDefinitionsTest : public ::testing::Test {

108110

public:

109111

void SetUp() override {

110112

ASSERT_OK_AND_ASSIGN(

111-

TypeCheckerBuilder builder,

113+

std::unique_ptr<TypeCheckerBuilder> builder,

112114

CreateTypeCheckerBuilder(GetSharedTestingDescriptorPool()));

113-

ASSERT_THAT(builder.AddLibrary(StandardCheckerLibrary()), IsOk());

114-

ASSERT_OK_AND_ASSIGN(stdlib_type_checker_, std::move(builder).Build());

115+

ASSERT_THAT(builder->AddLibrary(StandardCheckerLibrary()), IsOk());

116+

ASSERT_OK_AND_ASSIGN(stdlib_type_checker_, std::move(*builder).Build());

115117

}

116118117119

protected:

@@ -212,12 +214,12 @@ class StdLibDefinitionsTest

212214

// Type-parameterized functions are not yet checkable.

213215

TEST_P(StdLibDefinitionsTest, Runner) {

214216

ASSERT_OK_AND_ASSIGN(

215-

TypeCheckerBuilder builder,

217+

std::unique_ptr<TypeCheckerBuilder> builder,

216218

CreateTypeCheckerBuilder(GetSharedTestingDescriptorPool(),

217219

GetParam().options));

218-

ASSERT_THAT(builder.AddLibrary(StandardCheckerLibrary()), IsOk());

220+

ASSERT_THAT(builder->AddLibrary(StandardCheckerLibrary()), IsOk());

219221

ASSERT_OK_AND_ASSIGN(std::unique_ptr<TypeChecker> type_checker,

220-

std::move(builder).Build());

222+

std::move(*builder).Build());

221223222224

ASSERT_OK_AND_ASSIGN(std::unique_ptr<Ast> ast,

223225

checker_internal::MakeTestParsedAst(GetParam().expr));