Lines Matching refs:checker

19 #include <typescript/checker.h>
147 void GetSpreadElementType(checker::Checker *checker, checker::Type *spreadType,
148 ArenaVector<checker::Type *> &elementTypes, const lexer::SourcePosition &loc)
150 bool inConstContext = checker->HasStatus(checker::CheckerStatus::IN_CONST_CONTEXT);
153 ArenaVector<checker::Type *> tupleElementTypes(checker->Allocator()->Adapter());
154 checker::TupleType *spreadTuple = spreadType->AsObjectType()->AsTupleType();
169 elementTypes.push_back(checker->CreateUnionType(std::move(tupleElementTypes)));
175 ArenaVector<checker::Type *> spreadTypes(checker->Allocator()->Adapter());
185 checker::TupleType *tuple = type->AsObjectType()->AsTupleType();
199 elementTypes.push_back(checker->CreateUnionType(std::move(spreadTypes)));
204 checker->ThrowTypeError(
208 checker::Type *ArrayExpression::Check(checker::Checker *checker) const
210 ArenaVector<checker::Type *> elementTypes(checker->Allocator()->Adapter());
211 ArenaVector<checker::ElementFlags> elementFlags(checker->Allocator()->Adapter());
212 bool inConstContext = checker->HasStatus(checker::CheckerStatus::IN_CONST_CONTEXT);
213 bool createTuple = checker->HasStatus(checker::CheckerStatus::FORCE_TUPLE);
217 checker::Type *spreadType = it->AsSpreadElement()->Argument()->Check(checker);
221 elementFlags.push_back(checker::ElementFlags::VARIADIC);
225 GetSpreadElementType(checker, spreadType, elementTypes, it->Start());
226 elementFlags.push_back(checker::ElementFlags::REST);
230 checker::Type *elementType = it->Check(checker);
233 elementType = checker->GetBaseTypeOfLiteralType(elementType);
236 elementFlags.push_back(checker::ElementFlags::REQUIRED);
241 checker::ObjectDescriptor *desc = checker->Allocator()->New<checker::ObjectDescriptor>(checker->Allocator());
246 util::StringView memberIndex = util::Helpers::ToStringView(checker->Allocator(), index);
248 binder::Scope::CreateVar(checker->Allocator(), memberIndex, binder::VariableFlags::PROPERTY, nullptr);
258 return checker->CreateTupleType(desc, std::move(elementFlags), checker::ElementFlags::REQUIRED, index, index,
262 checker::Type *arrayElementType = nullptr;
264 arrayElementType = checker->GlobalAnyType();
266 arrayElementType = checker->CreateUnionType(std::move(elementTypes));
269 return checker->Allocator()->New<checker::ArrayType>(arrayElementType);
272 checker::Type *ArrayExpression::CheckPattern(checker::Checker *checker) const
274 checker::ObjectDescriptor *desc = checker->Allocator()->New<checker::ObjectDescriptor>(checker->Allocator());
276 ArenaVector<checker::ElementFlags> elementFlags(checker->Allocator()->Adapter());
277 checker::ElementFlags combinedFlags = checker::ElementFlags::NO_OPTS;
283 checker::Type *elementType = nullptr;
284 checker::ElementFlags memberFlag = checker::ElementFlags::NO_OPTS;
288 elementType = checker->Allocator()->New<checker::ArrayType>(checker->GlobalAnyType());
289 memberFlag = checker::ElementFlags::REST;
294 elementType = (*it)->AsObjectPattern()->CheckPattern(checker);
295 memberFlag = checker::ElementFlags::REQUIRED;
300 elementType = (*it)->AsArrayPattern()->CheckPattern(checker);
301 memberFlag = checker::ElementFlags::REQUIRED;
312 checker::Type *initializerType =
313 checker->GetBaseTypeOfLiteralType(assignmentPattern->Right()->Check(checker));
317 auto savedContext = checker::SavedCheckerContext(checker, checker::CheckerStatus::FORCE_TUPLE);
319 checker::ArrayDestructuringContext(checker, assignmentPattern->Left()->AsArrayPattern(), false,
325 auto savedContext = checker::SavedCheckerContext(checker, checker::CheckerStatus::FORCE_TUPLE);
327 checker::ObjectDestructuringContext(checker, assignmentPattern->Left()->AsObjectPattern(),
334 memberFlag = checker::ElementFlags::OPTIONAL;
336 memberFlag = checker::ElementFlags::REQUIRED;
342 elementType = checker->GlobalAnyType();
343 memberFlag = checker::ElementFlags::REQUIRED;
350 elementType = checker->GlobalAnyType();
352 memberFlag = checker::ElementFlags::REQUIRED;
361 util::StringView memberIndex = util::Helpers::ToStringView(checker->Allocator(), index - 1);
364 binder::Scope::CreateVar(checker->Allocator(), memberIndex, binder::VariableFlags::PROPERTY, *it);
366 if (memberFlag == checker::ElementFlags::OPTIONAL) {
380 return checker->CreateTupleType(desc, std::move(elementFlags), combinedFlags, minLength, desc->properties.size(),