| 123 | } |
| 124 | |
| 125 | absl::Status Config::AddVariableConfig(const VariableConfig& variable_config) { |
| 126 | for (const VariableConfig& existing_variable_config : variable_configs_) { |
| 127 | if (existing_variable_config.name == variable_config.name) { |
| 128 | return absl::AlreadyExistsError(absl::StrCat( |
| 129 | "Variable '", variable_config.name, "' is already included.")); |
| 130 | } |
| 131 | } |
| 132 | if (variable_config.value.has_value()) { |
| 133 | absl::string_view constant_type_name = |
| 134 | ConstantKindToTypeName(variable_config.value.kind()); |
| 135 | if (constant_type_name != variable_config.type_info.name) { |
| 136 | return absl::InvalidArgumentError( |
| 137 | absl::StrCat("Variable '", variable_config.name, "' has type ", |
| 138 | variable_config.type_info.name, |
| 139 | " but is assigned a constant value of type ", |
| 140 | constant_type_name, ".")); |
| 141 | } |
| 142 | } |
| 143 | variable_configs_.push_back(variable_config); |
| 144 | return absl::OkStatus(); |
| 145 | } |
| 146 | |
| 147 | absl::Status Config::ValidateFunctionConfig( |
| 148 | const FunctionConfig& function_config) { |