Lines Matching +full:checker +full:-
7 * http://www.apache.org/licenses/LICENSE-2.0
16 #include "checker/ETSchecker.h"
17 #include "checker/types/ets/etsFunctionType.h"
47 …d::optional<std::string> GenReturnTypeStr(const checker::Type *checkerType, checker::ETSChecker *c…
48 …td::optional<std::string> GenUnionType(const checker::ETSUnionType *unionType, checker::ETSChecker…
52 …Type *> FilterUnionTypes(const ArenaVector<UnionType *> &originTypes, checker::ETSChecker *checker) in FilterUnionTypes() argument
61 std::string typeStr = originType->ToString(); in FilterUnionTypes()
63 if (originType->IsTSThisType()) { in FilterUnionTypes()
67 typeStr = originType->GetType(checker)->ToString(); in FilterUnionTypes()
86 std::optional<std::string> HandleSpecificObjectTypes(const checker::ETSObjectType *objectType, in HandleSpecificObjectTypes()
87 [[maybe_unused]] checker::ETSChecker *checker) in HandleSpecificObjectTypes() argument
89 if (objectType->IsETSStringType()) { in HandleSpecificObjectTypes()
92 if (objectType->IsETSBigIntType()) { in HandleSpecificObjectTypes()
95 if (objectType->IsETSUnboxableObject()) { in HandleSpecificObjectTypes()
101 …::optional<std::string> GenObjectType(const checker::ETSObjectType *objectType, checker::ETSChecke… in GenObjectType() argument
103 …if (auto specificTypeStr = HandleSpecificObjectTypes(objectType, checker); specificTypeStr.has_val… in GenObjectType()
106 std::string typeStr = objectType->Name().Mutf8(); in GenObjectType()
111 const auto &typeArgs = objectType->TypeArguments(); in GenObjectType()
115 if (typeArgs[0]->IsETSUnionType()) { in GenObjectType()
116 auto unionTypeStr = GenUnionType(typeArgs[0]->AsETSUnionType(), checker, ','); in GenObjectType()
127 … if (auto elementTypeStr = GenReturnTypeStr(typeArgs[0], checker); elementTypeStr.has_value()) { in GenObjectType()
139 …d::optional<std::string> HandleObjectType(const checker::Type *checkerType, checker::ETSChecker *c… in HandleObjectType() argument
141 std::string typeStr = checkerType->ToString(); in HandleObjectType()
154 return GenObjectType(checkerType->AsETSObjectType(), checker); in HandleObjectType()
157 …td::optional<std::string> GenUnionType(const checker::ETSUnionType *unionType, checker::ETSChecker… in GenUnionType() argument
160 auto originTypes = FilterUnionTypes(unionType->ConstituentTypes(), checker); in GenUnionType()
166 auto elementTypeStr = GenReturnTypeStr(originTypes[i], checker); in GenUnionType()
183 …td::optional<std::string> HandleArrayType(const checker::Type *checkerType, checker::ETSChecker *c… in HandleArrayType() argument
186 const auto *elementType = checkerType->AsETSArrayType()->ElementType(); in HandleArrayType()
187 bool needParentheses = elementType->IsETSUnionType() || elementType->IsETSFunctionType(); in HandleArrayType()
189 … if (auto elementTypeStr = GenReturnTypeStr(elementType, checker); elementTypeStr.has_value()) { in HandleArrayType()
193 … if (auto elementTypeStr = GenReturnTypeStr(elementType, checker); elementTypeStr.has_value()) { in HandleArrayType()
201 …ional<std::string> HandleETSSpecificTypes(const checker::Type *checkerType, checker::ETSChecker *c… in HandleETSSpecificTypes() argument
203 switch (checker::ETSChecker::ETSType(checkerType)) { in HandleETSSpecificTypes()
204 case checker::TypeFlag::ETS_VOID: in HandleETSSpecificTypes()
205 case checker::TypeFlag::ETS_NULL: in HandleETSSpecificTypes()
206 case checker::TypeFlag::ETS_UNDEFINED: in HandleETSSpecificTypes()
207 case checker::TypeFlag::ETS_BOOLEAN: in HandleETSSpecificTypes()
208 case checker::TypeFlag::ETS_TYPE_PARAMETER: in HandleETSSpecificTypes()
209 case checker::TypeFlag::ETS_NONNULLISH: in HandleETSSpecificTypes()
210 case checker::TypeFlag::ETS_PARTIAL_TYPE_PARAMETER: in HandleETSSpecificTypes()
211 case checker::TypeFlag::ETS_NEVER: in HandleETSSpecificTypes()
212 case checker::TypeFlag::ETS_READONLY: in HandleETSSpecificTypes()
213 return checkerType->ToString(); in HandleETSSpecificTypes()
215 case checker::TypeFlag::ETS_OBJECT: in HandleETSSpecificTypes()
216 case checker::TypeFlag::ETS_DYNAMIC_TYPE: in HandleETSSpecificTypes()
217 return HandleObjectType(checkerType, checker); in HandleETSSpecificTypes()
219 case checker::TypeFlag::ETS_ARRAY: in HandleETSSpecificTypes()
220 return HandleArrayType(checkerType, checker); in HandleETSSpecificTypes()
222 case checker::TypeFlag::ETS_UNION: in HandleETSSpecificTypes()
223 return GenUnionType(checkerType->AsETSUnionType(), checker); in HandleETSSpecificTypes()
230 std::optional<std::string> HandleBasicTypes(const checker::Type *checkerType) in HandleBasicTypes()
232 if (checkerType->IsETSEnumType()) { in HandleBasicTypes()
233 return checkerType->ToString(); in HandleBasicTypes()
235 if (checkerType->HasTypeFlag(checker::TypeFlag::CHAR)) { in HandleBasicTypes()
238 if (checkerType->HasTypeFlag(checker::TypeFlag::ETS_CONVERTIBLE_TO_NUMERIC)) { in HandleBasicTypes()
244 …d::optional<std::string> GenReturnTypeStr(const checker::Type *checkerType, checker::ETSChecker *c… in GenReturnTypeStr() argument
254 if (checkerType->HasTypeFlag(checker::TypeFlag::ETS_CONVERTIBLE_TO_NUMERIC)) { in GenReturnTypeStr()
257 if (checkerType->IsETSStringEnumType()) { in GenReturnTypeStr()
261 …if (auto specificTypeStr = HandleETSSpecificTypes(checkerType, checker); specificTypeStr.has_value… in GenReturnTypeStr()
267 std::string GetReturnTypeStr(const checker::Type *checkerType, checker::ETSChecker *checker) in GetReturnTypeStr() argument
269 if (auto typeStr = GenReturnTypeStr(checkerType, checker); typeStr.has_value()) { in GetReturnTypeStr()
275 const checker::Signature *GetFuncSignature(const checker::ETSFunctionType *etsFunctionType, in GetFuncSignature()
278 if (etsFunctionType->IsETSArrowType()) { in GetFuncSignature()
279 return etsFunctionType->ArrowSignature(); in GetFuncSignature()
282 return methodDef->Function()->Signature(); in GetFuncSignature()
284 return etsFunctionType->CallSignatures()[0]; in GetFuncSignature()
291 auto returnTypeAnnotation = func->ReturnTypeAnnotation(); in GetTextChange()
293 auto start = returnTypeAnnotation->Start().index; in GetTextChange()
294 auto end = returnTypeAnnotation->End().index; in GetTextChange()
295 return TextChange {TextSpan(start, end - start), typeStr}; in GetTextChange()
298 auto bodyStart = func->Body()->Start().index; in GetTextChange()
299 auto sourceCode = program->SourceCode().Utf8(); in GetTextChange()
301 for (; i >= func->Start().index; --i) { in GetTextChange()
302 if (i >= 1 && sourceCode[i - 1] == ')') { in GetTextChange()
310 …nal<TextChange> ProcessMethodDefinition(ir::MethodDefinition *method, checker::ETSChecker *checker, in ProcessMethodDefinition() argument
315 auto signature = GetFuncSignature(method->TsType()->AsETSFunctionType(), method); in ProcessMethodDefinition()
316 auto typeStr = GetReturnTypeStr(signature->ReturnType(), checker); in ProcessMethodDefinition()
318 auto textChange = GetTextChange(method->Function(), typeStr, program); in ProcessMethodDefinition()
322 …tChange> ProcessArrowFunction(ir::ArrowFunctionExpression *arrowFunc, checker::ETSChecker *checker, in ProcessArrowFunction() argument
327 auto signature = arrowFunc->Function()->Signature(); in ProcessArrowFunction()
328 auto typeStr = GetReturnTypeStr(signature->ReturnType(), checker); in ProcessArrowFunction()
330 auto textChange = GetTextChange(arrowFunc->Function(), typeStr, program); in ProcessArrowFunction()
334 …d::optional<TextChange> ProcessIdentifier(ir::Identifier *identifier, checker::ETSChecker *checker, in ProcessIdentifier() argument
340 if (decl != nullptr && decl->IsMethodDefinition()) { in ProcessIdentifier()
341 return ProcessMethodDefinition(decl->AsMethodDefinition(), checker, program); in ProcessIdentifier()
343 if (decl != nullptr && decl->IsArrowFunctionExpression()) { in ProcessIdentifier()
344 return ProcessArrowFunction(decl->AsArrowFunctionExpression(), checker, program); in ProcessIdentifier()
346 if (decl != nullptr && decl->IsClassProperty()) { in ProcessIdentifier()
347 auto propertyValue = decl->AsClassProperty()->Value(); in ProcessIdentifier()
348 if (propertyValue != nullptr && propertyValue->IsArrowFunctionExpression()) { in ProcessIdentifier()
349 … return ProcessArrowFunction(propertyValue->AsArrowFunctionExpression(), checker, program); in ProcessIdentifier()