• Home
  • Raw
  • Download

Lines Matching +full:checker +full:-

7  * http://www.apache.org/licenses/LICENSE-2.0
33 switch (it->Type()) { in ConvertibleToArrayPattern()
35 convResult = it->AsArrayExpression()->ConvertibleToArrayPattern(); in ConvertibleToArrayPattern()
40 convResult = it->AsSpreadElement()->ConvertibleToRest(isDeclaration_); in ConvertibleToArrayPattern()
48 convResult = it->AsObjectExpression()->ConvertibleToObjectPattern(); in ConvertibleToArrayPattern()
52 convResult = it->AsAssignmentExpression()->ConvertibleToAssignmentPattern(); in ConvertibleToArrayPattern()
80 switch (it->Type()) { in ValidateExpression()
82 info = it->AsObjectExpression()->ValidateExpression(); in ValidateExpression()
86 info = it->AsArrayExpression()->ValidateExpression(); in ValidateExpression()
90 auto *assignmentExpr = it->AsAssignmentExpression(); in ValidateExpression()
92 if (assignmentExpr->Left()->IsArrayExpression()) { in ValidateExpression()
93 info = assignmentExpr->Left()->AsArrayExpression()->ValidateExpression(); in ValidateExpression()
94 } else if (assignmentExpr->Left()->IsObjectExpression()) { in ValidateExpression()
95 info = assignmentExpr->Left()->AsObjectExpression()->ValidateExpression(); in ValidateExpression()
101 info = it->AsSpreadElement()->ValidateExpression(); in ValidateExpression()
130 …dumper->Add({{"type", type_ == AstNodeType::ARRAY_EXPRESSION ? "ArrayExpression" : "ArrayPattern"}, in Dump()
139 compiler::VReg arrayObj = pg->AllocReg(); in Compile()
141 pg->CreateArray(this, elements_, arrayObj); in Compile()
144 void GetSpreadElementType(checker::Checker *checker, checker::Type *spreadType, in GetSpreadElementType() argument
145 … ArenaVector<checker::Type *> &elementTypes, const lexer::SourcePosition &loc) in GetSpreadElementType()
147 bool inConstContext = checker->HasStatus(checker::CheckerStatus::IN_CONST_CONTEXT); in GetSpreadElementType()
149 if (spreadType->IsObjectType() && spreadType->AsObjectType()->IsTupleType()) { in GetSpreadElementType()
150 ArenaVector<checker::Type *> tupleElementTypes(checker->Allocator()->Adapter()); in GetSpreadElementType()
151 checker::TupleType *spreadTuple = spreadType->AsObjectType()->AsTupleType(); in GetSpreadElementType()
153 for (auto *it : spreadTuple->Properties()) { in GetSpreadElementType()
155 elementTypes.push_back(it->TsType()); in GetSpreadElementType()
159 tupleElementTypes.push_back(it->TsType()); in GetSpreadElementType()
166 elementTypes.push_back(checker->CreateUnionType(std::move(tupleElementTypes))); in GetSpreadElementType()
171 if (spreadType->IsUnionType()) { in GetSpreadElementType()
172 ArenaVector<checker::Type *> spreadTypes(checker->Allocator()->Adapter()); in GetSpreadElementType()
175 for (auto *type : spreadType->AsUnionType()->ConstituentTypes()) { in GetSpreadElementType()
176 if (type->IsArrayType()) { in GetSpreadElementType()
177 spreadTypes.push_back(type->AsArrayType()->ElementType()); in GetSpreadElementType()
181 if (type->IsObjectType() && type->AsObjectType()->IsTupleType()) { in GetSpreadElementType()
182 checker::TupleType *tuple = type->AsObjectType()->AsTupleType(); in GetSpreadElementType()
184 for (auto *it : tuple->Properties()) { in GetSpreadElementType()
185 spreadTypes.push_back(it->TsType()); in GetSpreadElementType()
196 elementTypes.push_back(checker->CreateUnionType(std::move(spreadTypes))); in GetSpreadElementType()
201 checker->ThrowTypeError( in GetSpreadElementType()
205 checker::Type *ArrayExpression::Check(checker::Checker *checker) const in Check()
207 ArenaVector<checker::Type *> elementTypes(checker->Allocator()->Adapter()); in Check()
208 ArenaVector<checker::ElementFlags> elementFlags(checker->Allocator()->Adapter()); in Check()
209 bool inConstContext = checker->HasStatus(checker::CheckerStatus::IN_CONST_CONTEXT); in Check()
210 bool createTuple = checker->HasStatus(checker::CheckerStatus::FORCE_TUPLE); in Check()
213 if (it->IsSpreadElement()) { in Check()
214 checker::Type *spreadType = it->AsSpreadElement()->Argument()->Check(checker); in Check()
216 if (spreadType->IsArrayType()) { in Check()
217 … elementTypes.push_back(inConstContext ? spreadType : spreadType->AsArrayType()->ElementType()); in Check()
218 elementFlags.push_back(checker::ElementFlags::VARIADIC); in Check()
222 GetSpreadElementType(checker, spreadType, elementTypes, it->Start()); in Check()
223 elementFlags.push_back(checker::ElementFlags::REST); in Check()
227 checker::Type *elementType = it->Check(checker); in Check()
230 elementType = checker->GetBaseTypeOfLiteralType(elementType); in Check()
233 elementFlags.push_back(checker::ElementFlags::REQUIRED); in Check()
238checker::ObjectDescriptor *desc = checker->Allocator()->New<checker::ObjectDescriptor>(checker->Al… in Check()
243 util::StringView memberIndex = util::Helpers::ToStringView(checker->Allocator(), index); in Check()
245 …binder::Scope::CreateVar(checker->Allocator(), memberIndex, binder::VariableFlags::PROPERTY, nullp… in Check()
248 tupleMember->AddFlag(binder::VariableFlags::READONLY); in Check()
251 tupleMember->SetTsType(*it); in Check()
252 desc->properties.push_back(tupleMember); in Check()
255 …return checker->CreateTupleType(desc, std::move(elementFlags), checker::ElementFlags::REQUIRED, in… in Check()
259 checker::Type *arrayElementType = nullptr; in Check()
261 arrayElementType = checker->GlobalAnyType(); in Check()
263 arrayElementType = checker->CreateUnionType(std::move(elementTypes)); in Check()
266 return checker->Allocator()->New<checker::ArrayType>(arrayElementType); in Check()
269 checker::Type *ArrayExpression::CheckPattern(checker::Checker *checker) const in CheckPattern()
271checker::ObjectDescriptor *desc = checker->Allocator()->New<checker::ObjectDescriptor>(checker->Al… in CheckPattern()
273 ArenaVector<checker::ElementFlags> elementFlags(checker->Allocator()->Adapter()); in CheckPattern()
274 checker::ElementFlags combinedFlags = checker::ElementFlags::NO_OPTS; in CheckPattern()
280 checker::Type *elementType = nullptr; in CheckPattern()
281 checker::ElementFlags memberFlag = checker::ElementFlags::NO_OPTS; in CheckPattern()
283 switch ((*it)->Type()) { in CheckPattern()
285 … elementType = checker->Allocator()->New<checker::ArrayType>(checker->GlobalAnyType()); in CheckPattern()
286 memberFlag = checker::ElementFlags::REST; in CheckPattern()
291 elementType = (*it)->AsObjectPattern()->CheckPattern(checker); in CheckPattern()
292 memberFlag = checker::ElementFlags::REQUIRED; in CheckPattern()
297 elementType = (*it)->AsArrayPattern()->CheckPattern(checker); in CheckPattern()
298 memberFlag = checker::ElementFlags::REQUIRED; in CheckPattern()
303 const ir::AssignmentExpression *assignmentPattern = (*it)->AsAssignmentPattern(); in CheckPattern()
305 if (assignmentPattern->Left()->IsIdentifier()) { in CheckPattern()
306 const ir::Identifier *ident = assignmentPattern->Left()->AsIdentifier(); in CheckPattern()
307 ASSERT(ident->Variable()); in CheckPattern()
308 binder::Variable *bindingVar = ident->Variable(); in CheckPattern()
309 checker::Type *initializerType = in CheckPattern()
310checker->GetBaseTypeOfLiteralType(assignmentPattern->Right()->Check(checker)); in CheckPattern()
311 bindingVar->SetTsType(initializerType); in CheckPattern()
313 } else if (assignmentPattern->Left()->IsArrayPattern()) { in CheckPattern()
314 … auto savedContext = checker::SavedCheckerContext(checker, checker::CheckerStatus::FORCE_TUPLE); in CheckPattern()
316checker::ArrayDestructuringContext(checker, assignmentPattern->Left()->AsArrayPattern(), false, in CheckPattern()
317 … true, nullptr, assignmentPattern->Right()); in CheckPattern()
321 ASSERT(assignmentPattern->Left()->IsObjectPattern()); in CheckPattern()
322 … auto savedContext = checker::SavedCheckerContext(checker, checker::CheckerStatus::FORCE_TUPLE); in CheckPattern()
324checker::ObjectDestructuringContext(checker, assignmentPattern->Left()->AsObjectPattern(), in CheckPattern()
325 … false, true, nullptr, assignmentPattern->Right()); in CheckPattern()
331 memberFlag = checker::ElementFlags::OPTIONAL; in CheckPattern()
333 memberFlag = checker::ElementFlags::REQUIRED; in CheckPattern()
339 elementType = checker->GlobalAnyType(); in CheckPattern()
340 memberFlag = checker::ElementFlags::REQUIRED; in CheckPattern()
345 const ir::Identifier *ident = (*it)->AsIdentifier(); in CheckPattern()
346 ASSERT(ident->Variable()); in CheckPattern()
347 elementType = checker->GlobalAnyType(); in CheckPattern()
348 ident->Variable()->SetTsType(elementType); in CheckPattern()
349 memberFlag = checker::ElementFlags::REQUIRED; in CheckPattern()
358 util::StringView memberIndex = util::Helpers::ToStringView(checker->Allocator(), index - 1); in CheckPattern()
361 … binder::Scope::CreateVar(checker->Allocator(), memberIndex, binder::VariableFlags::PROPERTY, *it); in CheckPattern()
363 if (memberFlag == checker::ElementFlags::OPTIONAL) { in CheckPattern()
364 memberVar->AddFlag(binder::VariableFlags::OPTIONAL); in CheckPattern()
369 memberVar->SetTsType(elementType); in CheckPattern()
371 desc->properties.insert(desc->properties.begin(), memberVar); in CheckPattern()
374 index--; in CheckPattern()
377 …return checker->CreateTupleType(desc, std::move(elementFlags), combinedFlags, minLength, desc->pro… in CheckPattern()
384 *iter = std::get<ir::AstNode *>(cb(*iter))->AsExpression(); in UpdateSelf()