Lines Matching refs:checker

18 #include "checker/ETSchecker.h"
19 #include "checker/TSchecker.h"
20 #include "checker/types/ets/etsTupleType.h"
21 #include "checker/ets/typeRelationContext.h"
22 #include "checker/ts/destructuringContext.h"
238 checker::Type *ArrayExpression::Check(checker::TSChecker *checker)
240 return checker->GetAnalyzer()->Check(this);
243 checker::Type *CheckAssignmentPattern(Expression *it, checker::TSChecker *checker, checker::Type *elementType,
244 bool &addOptional, checker::ElementFlags &memberFlag)
251 checker::Type *initializerType = checker->GetBaseTypeOfLiteralType(assignmentPattern->Right()->Check(checker));
255 auto savedContext = checker::SavedCheckerContext(checker, checker::CheckerStatus::FORCE_TUPLE);
256 auto destructuringContext = checker::ArrayDestructuringContext(
257 {checker, assignmentPattern->Left()->AsArrayPattern(), false, true, nullptr, assignmentPattern->Right()});
262 auto savedContext = checker::SavedCheckerContext(checker, checker::CheckerStatus::FORCE_TUPLE);
263 auto destructuringContext = checker::ObjectDestructuringContext(
264 {checker, assignmentPattern->Left()->AsObjectPattern(), false, true, nullptr, assignmentPattern->Right()});
270 memberFlag = checker::ElementFlags::OPTIONAL;
272 memberFlag = checker::ElementFlags::REQUIRED;
277 checker::Type *CheckElementPattern(Expression *it, checker::Type *elementType, checker::TSChecker *checker,
278 bool &addOptional, checker::ElementFlags &memberFlag)
282 elementType = checker->Allocator()->New<checker::ArrayType>(checker->GlobalAnyType());
283 memberFlag = checker::ElementFlags::REST;
288 elementType = it->AsObjectPattern()->CheckPattern(checker);
289 memberFlag = checker::ElementFlags::REQUIRED;
294 elementType = it->AsArrayPattern()->CheckPattern(checker);
295 memberFlag = checker::ElementFlags::REQUIRED;
300 return CheckAssignmentPattern(it, checker, elementType, addOptional, memberFlag);
303 elementType = checker->GlobalAnyType();
304 memberFlag = checker::ElementFlags::REQUIRED;
311 elementType = checker->GlobalAnyType();
313 memberFlag = checker::ElementFlags::REQUIRED;
323 checker::Type *ArrayExpression::CheckPattern(checker::TSChecker *checker)
325 checker::ObjectDescriptor *desc = checker->Allocator()->New<checker::ObjectDescriptor>(checker->Allocator());
326 ArenaVector<checker::ElementFlags> elementFlags(checker->Allocator()->Adapter());
327 checker::ElementFlags combinedFlags = checker::ElementFlags::NO_OPTS;
333 checker::Type *elementType = nullptr;
334 checker::ElementFlags memberFlag = checker::ElementFlags::NO_OPTS;
336 elementType = CheckElementPattern(*it, elementType, checker, addOptional, memberFlag);
338 util::StringView memberIndex = util::Helpers::ToStringView(checker->Allocator(), index - 1);
341 varbinder::Scope::CreateVar(checker->Allocator(), memberIndex, varbinder::VariableFlags::PROPERTY, *it);
343 if (memberFlag == checker::ElementFlags::OPTIONAL) {
357 const checker::TupleTypeInfo tupleTypeInfo = {combinedFlags, minLength,
359 return checker->CreateTupleType(desc, std::move(elementFlags), tupleTypeInfo);
362 bool ArrayExpression::HandleNestedArrayExpression(checker::ETSChecker *const checker,
370 if (!checker->ValidateTupleMinElementSize(currentElement,
381 if (!checker->ValidateTupleMinElementSize(
397 checker::Type *ArrayExpression::Check(checker::ETSChecker *checker)
399 return checker->GetAnalyzer()->Check(this);
402 void ArrayExpression::GetPrefferedTypeFromFuncParam(checker::ETSChecker *checker, Expression *param,
403 checker::TypeRelationFlag flags)
408 auto paramType = param->Check(checker);
414 checker::AssignmentContext(checker->Relation(), elem, elem->Check(checker), elementType, elem->Start(),
415 {""}, checker::TypeRelationFlag::NO_THROW | flags);