Lines Matching full:checker
18 #include "checker/TSchecker.h"
24 checker::Type *ForOfStatement::CreateUnionIteratorTypes(checker::ETSChecker *checker, checker::Type… in CreateUnionIteratorTypes() argument
26 ArenaVector<checker::Type *> types(checker->Allocator()->Adapter()); in CreateUnionIteratorTypes()
30 types.push_back(checker->GetGlobalTypesHolder()->GlobalCharType()); in CreateUnionIteratorTypes()
32 types.push_back(this->CheckIteratorMethodForObject(checker, it->AsETSObjectType())); in CreateUnionIteratorTypes()
34 …es.push_back(it->AsETSArrayType()->ElementType()->Instantiate(checker->Allocator(), checker->Relat… in CreateUnionIteratorTypes()
35 … checker->GetGlobalTypesHolder())); in CreateUnionIteratorTypes()
36 types.back()->RemoveTypeFlag(checker::TypeFlag::CONSTANT); in CreateUnionIteratorTypes()
38 return checker->GlobalTypeError(); in CreateUnionIteratorTypes()
42 return checker->CreateETSUnionType(std::move(types)); in CreateUnionIteratorTypes()
108 checker::Type *ForOfStatement::Check(checker::TSChecker *checker) in Check() argument
110 return checker->GetAnalyzer()->Check(this); in Check()
113 checker::VerifiedType ForOfStatement::Check(checker::ETSChecker *checker) in Check() argument
115 return {this, checker->GetAnalyzer()->Check(this)}; in Check()
146 checker::Type *ForOfStatement::CheckIteratorMethodForObject(checker::ETSChecker *checker, in CheckIteratorMethodForObject() argument
147 checker::ETSObjectType *sourceType) in CheckIteratorMethodForObject()
151 checker::PropertySearchFlags searchFlag = checker::PropertySearchFlags::SEARCH_METHOD; in CheckIteratorMethodForObject()
152 …searchFlag |= checker::PropertySearchFlags::SEARCH_IN_BASE | checker::PropertySearchFlags::SEARCH_… in CheckIteratorMethodForObject()
153 …// NOTE: maybe we need to exclude static methods: search_flag &= ~(checker::PropertySearchFlags::S… in CheckIteratorMethodForObject()
155 if (sourceType->HasTypeFlag(checker::TypeFlag::GENERIC)) { in CheckIteratorMethodForObject()
156 searchFlag |= checker::PropertySearchFlags::SEARCH_ALL; in CheckIteratorMethodForObject()
161 checker->LogError(diagnostic::MISSING_ITERATOR_METHOD, {}, position); in CheckIteratorMethodForObject()
162 return checker->GlobalTypeError(); in CheckIteratorMethodForObject()
165 ArenaVector<Expression *> arguments {checker->Allocator()->Adapter()}; in CheckIteratorMethodForObject()
166 auto &signatures = checker->GetTypeOfVariable(method)->AsETSFunctionType()->CallSignatures(); in CheckIteratorMethodForObject()
167 …checker::Signature *signature = checker->ValidateSignatures(signatures, nullptr, arguments, positi… in CheckIteratorMethodForObject()
168 … checker::TypeRelationFlag::NO_THROW); in CheckIteratorMethodForObject()
170 checker->LogError(diagnostic::MISSING_ITERATOR_METHOD_WITH_SIG, {}, position); in CheckIteratorMethodForObject()
171 return checker->GlobalTypeError(); in CheckIteratorMethodForObject()
173 …checker->ValidateSignatureAccessibility(sourceType, signature, position, {{diagnostic::INVISIBLE_I… in CheckIteratorMethodForObject()
177 if (!CheckReturnTypeOfIteratorMethod(checker, sourceType, signature, position)) { in CheckIteratorMethodForObject()
178 return checker->GlobalTypeError(); in CheckIteratorMethodForObject()
181 if (checker->IsClassStaticMethod(sourceType, signature)) { in CheckIteratorMethodForObject()
182 …checker->LogError(diagnostic::PROP_IS_STATIC, {compiler::Signatures::ITERATOR_METHOD, sourceType->… in CheckIteratorMethodForObject()
184 return checker->GlobalTypeError(); in CheckIteratorMethodForObject()
190 checker->LogError(diagnostic::ITERATOR_MISSING_NEXT, {}, position); in CheckIteratorMethodForObject()
191 return checker->GlobalTypeError(); in CheckIteratorMethodForObject()
194 …auto &nextSignatures = checker->GetTypeOfVariable(nextMethod)->AsETSFunctionType()->CallSignatures… in CheckIteratorMethodForObject()
195 …auto const *const nextSignature = checker->ValidateSignatures(nextSignatures, nullptr, arguments, … in CheckIteratorMethodForObject()
196 … "iterator", checker::TypeRelationFlag::NO_THROW); in CheckIteratorMethodForObject()
204 return checker->GlobalTypeError(); in CheckIteratorMethodForObject()
207 bool ForOfStatement::CheckReturnTypeOfIteratorMethod(checker::ETSChecker *checker, checker::ETSObje… in CheckReturnTypeOfIteratorMethod() argument
208 checker::Signature *signature, in CheckReturnTypeOfIteratorMethod()
211 …if ((signature->ReturnType() == nullptr || signature->ReturnType() == checker->GlobalVoidType()) && in CheckReturnTypeOfIteratorMethod()
215 … checker::SavedCheckerContext savedContext(checker, checker::CheckerStatus::IN_CLASS, sourceType); in CheckReturnTypeOfIteratorMethod()
216 it->AsReturnStatement()->Check(checker); in CheckReturnTypeOfIteratorMethod()
223 …ForOfStatement::CheckIteratorInterfaceForObject(checker, signature->ReturnType()->AsETSObjectType(… in CheckReturnTypeOfIteratorMethod()
227 checker->LogError(diagnostic::ITERATOR_DOESNT_RETURN_ITERABLE, {}, position); in CheckReturnTypeOfIteratorMethod()
231 bool ForOfStatement::CheckIteratorInterfaceForObject(checker::ETSChecker *checker, checker::ETSObje… in CheckIteratorInterfaceForObject() argument
244 CheckIteratorInterfaceForObject(checker, obj->SuperType()->AsETSObjectType()); in CheckIteratorInterfaceForObject()
247 checker::Type *ForOfStatement::CheckIteratorMethod(checker::ETSChecker *const checker) in CheckIteratorMethod() argument
251 return CheckIteratorMethodForObject(checker, exprType->AsETSObjectType()); in CheckIteratorMethod()
255 return this->CreateUnionIteratorTypes(checker, exprType); in CheckIteratorMethod()
259 return checker->GlobalTypeError(); in CheckIteratorMethod()