Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
|
#include <qqmljstyperesolver_p.h>
Classes | |
struct | TrackedType |
Public Types | |
enum | ParentMode { UseDocumentParent , UseParentProperty } |
enum | CloneMode { CloneTypes , DoNotCloneTypes } |
enum | ListMode { UseListProperty , UseQObjectList } |
enum class | UnaryOperator { Not , Plus , Minus , Increment , Decrement , Complement } |
enum class | ComponentIsGeneric { No , Yes } |
Protected Member Functions | |
QQmlJSRegisterContent | memberType (const QQmlJSScope::ConstPtr &type, const QString &name, int baseLookupIndex, int resultLookupIndex) const |
QQmlJSRegisterContent | memberEnumType (const QQmlJSScope::ConstPtr &type, const QString &name) const |
bool | checkEnums (const QQmlJSScope::ConstPtr &scope, const QString &name, QQmlJSRegisterContent *result, QQmlJSScope::ExtensionKind mode) const |
bool | canPrimitivelyConvertFromTo (const QQmlJSScope::ConstPtr &from, const QQmlJSScope::ConstPtr &to) const |
QQmlJSRegisterContent | lengthProperty (bool isWritable, const QQmlJSScope::ConstPtr &scope) const |
QQmlJSRegisterContent | transformed (const QQmlJSRegisterContent &origin, QQmlJSScope::ConstPtr(QQmlJSTypeResolver::*op)(const QQmlJSScope::ConstPtr &) const) const |
QQmlJSRegisterContent | registerContentForName (const QString &name, const QQmlJSScope::ConstPtr &scopeType=QQmlJSScope::ConstPtr(), bool hasObjectModuelPrefix=false) const |
Definition at line 32 of file qqmljstyperesolver_p.h.
Enumerator | |
---|---|
CloneTypes | |
DoNotCloneTypes |
Definition at line 36 of file qqmljstyperesolver_p.h.
|
strong |
Enumerator | |
---|---|
No | |
Yes |
Definition at line 125 of file qqmljstyperesolver_p.h.
Enumerator | |
---|---|
UseListProperty | |
UseQObjectList |
Definition at line 37 of file qqmljstyperesolver_p.h.
Enumerator | |
---|---|
UseDocumentParent | |
UseParentProperty |
Definition at line 35 of file qqmljstyperesolver_p.h.
|
strong |
Enumerator | |
---|---|
Not | |
Plus | |
Minus | |
Increment | |
Decrement | |
Complement |
Definition at line 110 of file qqmljstyperesolver_p.h.
QQmlJSTypeResolver::QQmlJSTypeResolver | ( | QQmlJSImporter * | importer | ) |
Definition at line 29 of file qqmljstyperesolver.cpp.
References QQmlJSScope::accessSemantics(), assertExtension(), QQmlJSScope::create(), emptyType(), forInIteratorPtr(), forOfIteratorPtr(), QQmlJSScope::internalName(), QQmlJSImporter::jsGlobalObject(), jsPrimitiveType(), QQmlJSScope::listType(), m_arrayPrototype, m_boolType, m_byteArrayType, m_dateTimeType, m_dateType, m_emptyType, m_floatType, m_forInIteratorPtr, m_forOfIteratorPtr, m_functionType, m_imports, m_int16Type, m_int32Type, m_int64Type, m_int8Type, m_jsGlobalObject, m_jsPrimitiveType, m_jsValueType, m_listPropertyType, m_metaObjectType, m_nullType, m_numberPrototype, m_qObjectListType, m_qObjectType, m_qQmlScriptStringType, m_realType, m_sizeType, m_stringListType, m_stringType, m_timeType, m_uint16Type, m_uint32Type, m_uint64Type, m_uint8Type, m_urlType, m_variantListType, m_variantMapType, m_varType, m_voidType, metaObjectType(), Q_ASSERT, QQmlJSScope::setAccessSemantics(), QQmlJSScope::setFilePath(), QQmlJSScope::setInternalName(), and QQmlJSScope::valueTypeName().
void QQmlJSTypeResolver::adjustOriginalType | ( | const QQmlJSScope::ConstPtr & | tracked, |
const QQmlJSScope::ConstPtr & | conversion ) const |
Definition at line 632 of file qqmljstyperesolver.cpp.
References QQmlJSScope::clone(), DoNotCloneTypes, QSet< T >::end(), QSet< T >::find(), it, m_cloneMode, m_trackedTypes, Q_ASSERT, and tracked().
bool QQmlJSTypeResolver::adjustTrackedType | ( | const QQmlJSScope::ConstPtr & | tracked, |
const QList< QQmlJSScope::ConstPtr > & | conversions ) const |
Definition at line 606 of file qqmljstyperesolver.cpp.
References canPopulate(), canPrimitivelyConvertFromTo(), QQmlJSScope::clone(), comparableType(), DoNotCloneTypes, QSet< T >::end(), QSet< T >::find(), QQmlJSMetaMethod::isValid(), it, m_cloneMode, m_trackedTypes, merge(), Q_ASSERT, selectConstructor(), and tracked().
bool QQmlJSTypeResolver::adjustTrackedType | ( | const QQmlJSScope::ConstPtr & | tracked, |
const QQmlJSScope::ConstPtr & | conversion ) const |
Definition at line 584 of file qqmljstyperesolver.cpp.
References canPopulate(), canPrimitivelyConvertFromTo(), QQmlJSScope::clone(), comparableType(), DoNotCloneTypes, QSet< T >::end(), QSet< T >::find(), it, m_cloneMode, m_trackedTypes, Q_ASSERT, selectConstructor(), and tracked().
bool QQmlJSTypeResolver::areEquivalentLists | ( | const QQmlJSScope::ConstPtr & | a, |
const QQmlJSScope::ConstPtr & | b ) const |
Definition at line 1234 of file qqmljstyperesolver.cpp.
References equals(), QQmlJSScope::listType(), m_stringListType, m_stringType, m_variantListType, and m_varType.
Referenced by canPrimitivelyConvertFromTo(), and QQmlJSCodeGenerator::convertStored().
|
inline |
Definition at line 77 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypePropagator::generate_CallProperty().
|
inline |
Definition at line 58 of file qqmljstyperesolver_p.h.
Referenced by canConvertForLiteralBinding(), QQmlJSCodeGenerator::conversion(), QQmlJSCodeGenerator::convertStored(), QQmlJSTypePropagator::generate_CmpEqNull(), QQmlJSTypePropagator::generate_CmpNeNull(), QQmlJSCodeGenerator::generate_JumpFalse(), QQmlJSTypePropagator::generate_JumpFalse(), QQmlJSCodeGenerator::generate_JumpTrue(), QQmlJSTypePropagator::generate_JumpTrue(), QQmlJSCodeGenerator::generate_LoadConst(), QQmlJSCodeGenerator::generate_LoadFalse(), QQmlJSTypePropagator::generate_LoadFalse(), QQmlJSCodeGenerator::generate_LoadTrue(), QQmlJSTypePropagator::generate_LoadTrue(), QQmlJSCodeGenerator::generate_MoveConst(), QQmlJSMetaPropertyBinding::literalType(), merge(), typeForArithmeticUnaryOperation(), typeForBinaryOperation(), and typeForConst().
QQmlJSRegisterContent QQmlJSTypeResolver::builtinType | ( | const QQmlJSScope::ConstPtr & | type | ) | const |
Definition at line 980 of file qqmljstyperesolver.cpp.
References QQmlJSRegisterContent::Builtin, QQmlJSRegisterContent::create(), QQmlJSRegisterContent::InvalidLookupIndex, Q_ASSERT, and storedType().
Referenced by typeForArithmeticUnaryOperation(), and typeForBinaryOperation().
|
inline |
Definition at line 61 of file qqmljstyperesolver_p.h.
Referenced by canConvertForLiteralBinding(), and QQmlJSCodeGenerator::convertStored().
|
inline |
Definition at line 183 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypePropagator::generate_As(), and registerContentForName().
|
inline |
Definition at line 182 of file qqmljstyperesolver_p.h.
bool QQmlJSTypeResolver::canConvertFromTo | ( | const QQmlJSRegisterContent & | from, |
const QQmlJSRegisterContent & | to ) const |
Definition at line 711 of file qqmljstyperesolver.cpp.
References canConvertFromTo(), and containedType().
bool QQmlJSTypeResolver::canConvertFromTo | ( | const QQmlJSScope::ConstPtr & | from, |
const QQmlJSScope::ConstPtr & | to ) const |
Definition at line 682 of file qqmljstyperesolver.cpp.
References canPopulate(), canPrimitivelyConvertFromTo(), equals(), QQmlJSScope::internalName(), QDeferredSharedPointer< T >::isNull(), m_stringType, and selectConstructor().
Referenced by canConvertForLiteralBinding(), canConvertFromTo(), and canPrimitivelyConvertFromTo().
bool QQmlJSTypeResolver::canHold | ( | const QQmlJSScope::ConstPtr & | container, |
const QQmlJSScope::ConstPtr & | contained ) const |
Definition at line 824 of file qqmljstyperesolver.cpp.
References QQmlJSScope::accessSemantics(), base, equals(), isPrimitive(), QQmlJSScope::isReferenceType(), m_jsPrimitiveType, m_jsValueType, m_listPropertyType, m_qObjectListType, m_variantListType, m_varType, QQmlJSUtils::searchBaseAndExtensionTypes(), and QQmlJSScope::valueType().
Referenced by canPopulate(), QQmlJSCodeGenerator::convertContained(), memberType(), and selectConstructor().
bool QQmlJSTypeResolver::canHoldUndefined | ( | const QQmlJSRegisterContent & | content | ) | const |
Definition at line 867 of file qqmljstyperesolver.cpp.
References containedType(), QQmlJSRegisterContent::conversionOrigins(), equals(), QQmlJSRegisterContent::isConversion(), m_jsPrimitiveType, m_jsValueType, m_varType, m_voidType, origins, and QQmlJSRegisterContent::storedType().
Referenced by QQmlJSTypePropagator::generate_Ret(), QQmlJSTypePropagator::generate_StoreNameCommon(), and QQmlJSTypePropagator::generate_StoreProperty().
bool QQmlJSTypeResolver::canPopulate | ( | const QQmlJSScope::ConstPtr & | type, |
const QQmlJSScope::ConstPtr & | argument, | ||
bool * | isExtension ) const |
Definition at line 1154 of file qqmljstyperesolver.cpp.
References canHold(), and isPrimitive().
Referenced by adjustTrackedType(), adjustTrackedType(), canConvertFromTo(), QQmlJSCodeGenerator::convertContained(), QQmlJSCodeGenerator::convertStored(), and QQmlJSCodeGenerator::generate_DefineObjectLiteral().
|
protected |
Definition at line 1291 of file qqmljstyperesolver.cpp.
References QQmlJSScope::accessSemantics(), areEquivalentLists(), QQmlJSScope::baseType(), canConvertFromTo(), equals(), QQmlJSScope::internalName(), QQmlJSScope::isComposite(), QString::isEmpty(), QQmlJSScope::isListProperty(), QDeferredSharedPointer< T >::isNull(), isNumeric(), isPrimitive(), m_boolType, m_byteArrayType, m_dateTimeType, m_dateType, m_jsPrimitiveType, m_jsValueType, m_nullType, m_qQmlScriptStringType, m_realType, m_stringType, m_timeType, m_urlType, m_variantListType, m_varType, m_voidType, Q_ASSERT, QQmlJSScope::scopeType(), and QQmlJSScope::valueType().
Referenced by adjustTrackedType(), adjustTrackedType(), canConvertFromTo(), and selectConstructor().
QQmlJSRegisterContent QQmlJSTypeResolver::cast | ( | const QQmlJSRegisterContent & | from, |
const QQmlJSScope::ConstPtr & | to ) const |
Definition at line 1773 of file qqmljstyperesolver.cpp.
References QQmlJSRegisterContent::castTo(), QQmlJSRegisterContent::storedIn(), and storedType().
Referenced by QQmlJSTypePropagator::generate_As().
|
protected |
Definition at line 1120 of file qqmljstyperesolver.cpp.
References QQmlJSRegisterContent::create(), QQmlJSRegisterContent::ExtensionObjectEnum, QQmlJSScope::NotExtension, QQmlJSRegisterContent::ObjectEnum, QQmlJSScope::ownEnumerations(), and storedType().
Referenced by memberEnumType(), and memberType().
|
inline |
Definition at line 174 of file qqmljstyperesolver_p.h.
QQmlJSScope::ConstPtr QQmlJSTypeResolver::comparableType | ( | const QQmlJSScope::ConstPtr & | type | ) | const |
Definition at line 1779 of file qqmljstyperesolver.cpp.
References QSet< T >::constEnd(), QSet< T >::constFind(), it, and m_trackedTypes.
Referenced by adjustTrackedType(), adjustTrackedType(), equals(), and QQmlJSCodeGenerator::run().
QQmlJSScope::ConstPtr QQmlJSTypeResolver::consoleObject | ( | ) | const |
Definition at line 196 of file qqmljstyperesolver.cpp.
References jsGlobalObject(), QQmlJSScope::property(), and QQmlJSMetaProperty::type().
Referenced by QQmlJSTypePropagator::generate_CallProperty(), and QQmlJSCodeGenerator::generate_CallPropertyLookup().
QQmlJSScope::ConstPtr QQmlJSTypeResolver::containedType | ( | const QQmlJSRegisterContent & | container | ) | const |
Definition at line 390 of file qqmljstyperesolver.cpp.
References QQmlJSRegisterContent::conversionResult(), QQmlJSRegisterContent::enumeration(), QQmlJSRegisterContent::isConversion(), QQmlJSRegisterContent::isEnumeration(), QQmlJSRegisterContent::isImportNamespace(), QQmlJSRegisterContent::isMethod(), QQmlJSRegisterContent::isProperty(), QQmlJSRegisterContent::isType(), QQmlJSRegisterContent::ObjectModulePrefix, QQmlJSRegisterContent::property(), QQmlJSRegisterContent::ScopeModulePrefix, QQmlJSRegisterContent::scopeType(), QQmlJSRegisterContent::storedType(), QQmlJSMetaEnum::type(), QQmlJSMetaProperty::type(), QQmlJSRegisterContent::type(), and QQmlJSRegisterContent::variant().
Referenced by QQmlJSCodeGenerator::AccumulatorConverter::AccumulatorConverter(), canConvertFromTo(), canHoldUndefined(), containedTypeName(), QQmlJSCodeGenerator::contentPointer(), QQmlJSCodeGenerator::contentType(), QQmlJSCodeGenerator::conversion(), convert(), QQmlJSCodeGenerator::convertContained(), QQmlJSCodeGenerator::generate_As(), QQmlJSTypePropagator::generate_As(), QQmlJSTypePropagator::generate_CallProperty(), QQmlJSCodeGenerator::generate_Construct(), QQmlJSCodeGenerator::generate_DefineObjectLiteral(), QQmlJSCodeGenerator::generate_LoadElement(), QQmlJSTypePropagator::generate_LoadElement(), QQmlJSTypePropagator::generate_LoadQmlContextPropertyLookup(), QQmlJSCodeGenerator::generate_Ret(), QQmlJSCodeGenerator::generate_SetLookup(), QQmlJSCodeGenerator::generate_StoreElement(), QQmlJSTypePropagator::generate_StoreElement(), QQmlJSCodeGenerator::generateReturnError(), isIntegral(), isNumeric(), isPrimitive(), iteratorPointer(), merge(), originalContainedType(), QQmlJSCodeGenerator::run(), trackedContainedType(), typeForArithmeticUnaryOperation(), and typeForBinaryOperation().
QString QQmlJSTypeResolver::containedTypeName | ( | const QQmlJSRegisterContent & | container, |
bool | useFancyName = false ) const |
Definition at line 658 of file qqmljstyperesolver.cpp.
References containedType(), QQmlJSRegisterContent::MetaType, QQmlJSScope::prettyName(), QQmlJSRegisterContent::ScopeAttached, QQmlJSRegisterContent::scopeType(), typeName, and QQmlJSRegisterContent::variant().
Referenced by QQmlJSTypePropagator::generate_CallProperty(), and QQmlJSTypePropagator::generate_Ret().
QQmlJSRegisterContent QQmlJSTypeResolver::convert | ( | const QQmlJSRegisterContent & | from, |
const QQmlJSRegisterContent & | to ) const |
Definition at line 1758 of file qqmljstyperesolver.cpp.
References containedType(), QQmlJSRegisterContent::conversionOrigins(), QQmlJSRegisterContent::conversionResultScope(), QQmlJSRegisterContent::create(), QQmlJSRegisterContent::isConversion(), QQmlJSRegisterContent::scopeType(), QQmlJSRegisterContent::storedType(), and QQmlJSRegisterContent::variant().
|
inline |
Definition at line 63 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::convertStored(), and QQmlJSCodeGenerator::generate_Construct().
|
inline |
Definition at line 64 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::convertStored().
|
inline |
Definition at line 45 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), QQmlJSTypePropagator::generate_DeadTemporalZoneCheck(), QQmlJSTypePropagator::generate_InitializeBlockDeadTemporalZone(), and typeForConst().
bool QQmlJSTypeResolver::equals | ( | const QQmlJSScope::ConstPtr & | a, |
const QQmlJSScope::ConstPtr & | b ) const |
Compares the origin types of a and b. A straight a == b would compare the identity of the pointers. However, since we clone types to keep track of them, we need a separate way to compare the clones. Usually you'd do *a == *b for that, but as QQmlJSScope is rather large, we offer an optimization here that uses the type tracking we already have in place.
Definition at line 1753 of file qqmljstyperesolver.cpp.
References comparableType().
Referenced by QQmlJSCodeGenerator::AccumulatorConverter::AccumulatorConverter(), areEquivalentLists(), canCompareWithQObject(), canCompareWithQUrl(), canConvertForLiteralBinding(), canConvertFromTo(), canHold(), canHoldUndefined(), canPrimitivelyConvertFromTo(), canStrictlyCompareWithVar(), QQmlJSCodeGenerator::contentType(), QQmlJSCodeGenerator::conversion(), QQmlJSCodeGenerator::convertContained(), QQmlJSCodeGenerator::convertStored(), extractNonVoidFromOptionalType(), QQmlJSCodeGenerator::generate_As(), QQmlJSTypePropagator::generate_CallProperty(), QQmlJSCodeGenerator::generate_CallPropertyLookup(), QQmlJSCodeGenerator::generate_CallQmlContextPropertyLookup(), QQmlJSTypePropagator::generate_DeadTemporalZoneCheck(), QQmlJSCodeGenerator::generate_DefineObjectLiteral(), QQmlJSCodeGenerator::generate_GetIterator(), QQmlJSCodeGenerator::generate_GetOptionalLookup(), QQmlJSCodeGenerator::generate_IteratorNext(), QQmlJSCodeGenerator::generate_Ret(), QQmlJSCodeGenerator::generate_SetLookup(), QQmlJSCodeGenerator::generateReturnError(), genericType(), inherits(), isNativeArrayIndex(), isNumeric(), isOptionalType(), isPrimitive(), isSignedInteger(), isTriviallyCopyable(), isTypeStorable(), isUnsignedInteger(), memberType(), merge(), QQmlJSCodeGenerator::metaType(), registerContains(), registerIsStoredIn(), scopedType(), selectConstructor(), storedType(), typeForArithmeticUnaryOperation(), typeForBinaryOperation(), and valueType().
QQmlJSScope::ConstPtr QQmlJSTypeResolver::extractNonVoidFromOptionalType | ( | const QQmlJSRegisterContent & | content | ) | const |
Definition at line 901 of file qqmljstyperesolver.cpp.
References QQmlJSRegisterContent::conversionOrigins(), equals(), isOptionalType(), m_voidType, origins, and Q_ASSERT.
Referenced by QQmlJSCodeGenerator::generate_As(), QQmlJSCodeGenerator::generate_LoadElement(), and QQmlJSTypePropagator::generate_LoadElement().
|
inline |
Definition at line 48 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::convertStored().
|
inline |
Definition at line 78 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), QQmlJSCodeGenerator::generate_GetIterator(), and QQmlJSCodeGenerator::generate_IteratorNext().
|
inline |
Definition at line 79 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), QQmlJSCodeGenerator::generate_GetIterator(), and QQmlJSCodeGenerator::generate_IteratorNext().
|
inline |
Definition at line 73 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypePropagator::generate_LoadClosure().
void QQmlJSTypeResolver::generalizeType | ( | const QQmlJSScope::ConstPtr & | type | ) | const |
Definition at line 645 of file qqmljstyperesolver.cpp.
References QQmlJSScope::clone(), DoNotCloneTypes, QSet< T >::end(), QSet< T >::find(), genericType(), it, m_cloneMode, m_trackedTypes, and Q_ASSERT.
Referenced by QQmlJSStorageGeneralizer::run().
QQmlJSScope::ConstPtr QQmlJSTypeResolver::genericType | ( | const QQmlJSScope::ConstPtr & | type, |
ComponentIsGeneric | allowComponent = ComponentIsGeneric::No ) const |
Definition at line 913 of file qqmljstyperesolver.cpp.
References arg, base, QQmlJSScope::baseType(), QQmlSA::EnumScope, equals(), isPrimitive(), QQmlJSLogger::log(), m_boolType, m_byteArrayType, m_dateTimeType, m_dateType, m_floatType, m_forInIteratorPtr, m_forOfIteratorPtr, m_int16Type, m_int32Type, m_int64Type, m_int8Type, m_jsPrimitiveType, m_jsValueType, m_listPropertyType, m_logger, m_metaObjectType, m_qObjectListType, m_qObjectType, m_realType, m_stringListType, m_stringType, m_timeType, m_uint16Type, m_uint32Type, m_uint64Type, m_uint8Type, m_urlType, m_variantListType, m_variantMapType, m_varType, qmlCompiler, and Yes.
Referenced by QQmlJSCodeGenerator::convertContained(), generalizeType(), QQmlJSCodeGenerator::generate_As(), QQmlJSTypePropagator::generate_LoadQmlContextPropertyLookup(), QQmlJSCodeGenerator::generate_StoreElement(), memberType(), QQmlJSCodeGenerator::metaType(), registerContentForName(), QQmlJSStorageGeneralizer::run(), and storedType().
QQmlJSRegisterContent QQmlJSTypeResolver::globalType | ( | const QQmlJSScope::ConstPtr & | type | ) | const |
Definition at line 987 of file qqmljstyperesolver.cpp.
References QQmlJSRegisterContent::create(), QQmlJSRegisterContent::InvalidLookupIndex, storedType(), and QQmlJSRegisterContent::Unknown.
Referenced by QQmlJSCodeGenerator::convertContained(), QQmlJSCodeGenerator::convertStored(), QQmlJSCodeGenerator::generate_As(), QQmlJSTypePropagator::generate_As(), QQmlJSTypePropagator::generate_CallProperty(), QQmlJSCodeGenerator::generate_CmpEqInt(), QQmlJSTypePropagator::generate_CmpEqInt(), QQmlJSCodeGenerator::generate_CmpEqNull(), QQmlJSTypePropagator::generate_CmpEqNull(), QQmlJSTypePropagator::generate_CmpIn(), QQmlJSCodeGenerator::generate_CmpNeInt(), QQmlJSTypePropagator::generate_CmpNeInt(), QQmlJSCodeGenerator::generate_CmpNeNull(), QQmlJSTypePropagator::generate_CmpNeNull(), QQmlJSTypePropagator::generate_Construct(), QQmlJSTypePropagator::generate_ConvertThisToObject(), QQmlJSTypePropagator::generate_DefineArray(), QQmlJSCodeGenerator::generate_DefineObjectLiteral(), QQmlJSTypePropagator::generate_DefineObjectLiteral(), QQmlJSTypePropagator::generate_GetIterator(), QQmlJSTypePropagator::generate_InitializeBlockDeadTemporalZone(), QQmlJSTypePropagator::generate_IteratorNext(), QQmlJSTypePropagator::generate_JumpFalse(), QQmlJSTypePropagator::generate_JumpTrue(), QQmlJSTypePropagator::generate_LoadClosure(), QQmlJSTypePropagator::generate_LoadConst(), QQmlJSCodeGenerator::generate_LoadElement(), QQmlJSTypePropagator::generate_LoadElement(), QQmlJSTypePropagator::generate_LoadFalse(), QQmlJSTypePropagator::generate_LoadInt(), QQmlJSTypePropagator::generate_LoadLocal(), QQmlJSTypePropagator::generate_LoadNull(), QQmlJSTypePropagator::generate_LoadQmlContextPropertyLookup(), QQmlJSTypePropagator::generate_LoadRuntimeString(), QQmlJSTypePropagator::generate_LoadTrue(), QQmlJSTypePropagator::generate_LoadUndefined(), QQmlJSTypePropagator::generate_LoadZero(), QQmlJSTypePropagator::generate_MoveConst(), QQmlJSCodeGenerator::generate_StoreElement(), QQmlJSTypePropagator::generate_StoreElement(), QQmlJSTypePropagator::generate_StoreNameCommon(), QQmlJSCodeGenerator::generate_ThrowException(), QQmlJSTypePropagator::generate_ThrowException(), QQmlJSTypePropagator::generate_TypeofName(), QQmlJSTypePropagator::generate_TypeofValue(), QQmlJSFunctionInitializer::run(), and typeForBinaryOperation().
|
inline |
Definition at line 91 of file qqmljstyperesolver_p.h.
bool QQmlJSTypeResolver::inherits | ( | const QQmlJSScope::ConstPtr & | derived, |
const QQmlJSScope::ConstPtr & | base ) const |
Definition at line 1275 of file qqmljstyperesolver.cpp.
References base, derived, and equals().
Referenced by QQmlJSCodeGenerator::generate_As(), and QQmlJSTypePropagator::generate_As().
void QQmlJSTypeResolver::init | ( | QQmlJSImportVisitor * | visitor, |
QQmlJS::AST::Node * | program ) |
Initializes the type resolver. As part of that initialization, makes visitor traverse the program when given.
Definition at line 173 of file qqmljstyperesolver.cpp.
References QQmlJSImportVisitor::addressableScopes(), QQmlJSScopesById::clear(), QHash< Key, T >::clear(), QQmlJS::ContextualTypes::clearTypes(), QQmlJSImportVisitor::imports(), QQmlJSImportVisitor::logger(), m_imports, m_logger, m_objectsById, m_objectsByLocation, m_signalHandlers, QQmlJSImportVisitor::scopesBylocation(), and QQmlJSImportVisitor::signalHandlers().
Referenced by QQmlJSLinter::lintFile(), and QQmlJSAotCompiler::setDocument().
|
inline |
Definition at line 51 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::convertStored().
|
inline |
Definition at line 53 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::convertStored(), QQmlJSCodeGenerator::generate_CmpEqInt(), QQmlJSTypePropagator::generate_CmpEqInt(), QQmlJSCodeGenerator::generate_CmpNeInt(), QQmlJSTypePropagator::generate_CmpNeInt(), QQmlJSCodeGenerator::generate_LoadConst(), QQmlJSCodeGenerator::generate_LoadInt(), QQmlJSTypePropagator::generate_LoadInt(), QQmlJSCodeGenerator::generate_LoadZero(), QQmlJSTypePropagator::generate_LoadZero(), QQmlJSCodeGenerator::generate_MoveConst(), QQmlJSTypePropagator::generate_StoreElement(), merge(), typeForArithmeticUnaryOperation(), typeForBinaryOperation(), and typeForConst().
|
inline |
Definition at line 55 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::convertStored().
|
inline |
Definition at line 49 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::convertStored().
bool QQmlJSTypeResolver::isIntegral | ( | const QQmlJSRegisterContent & | type | ) | const |
Definition at line 335 of file qqmljstyperesolver.cpp.
References containedType(), and isIntegral().
Referenced by QQmlJSCodeGenerator::conversion(), QQmlJSCodeGenerator::convertContained(), QQmlJSCodeGenerator::convertStored(), isIntegral(), merge(), and typeForArithmeticUnaryOperation().
bool QQmlJSTypeResolver::isIntegral | ( | const QQmlJSScope::ConstPtr & | type | ) | const |
Definition at line 340 of file qqmljstyperesolver.cpp.
References isSignedInteger(), and isUnsignedInteger().
bool QQmlJSTypeResolver::isNativeArrayIndex | ( | const QQmlJSScope::ConstPtr & | type | ) | const |
Definition at line 379 of file qqmljstyperesolver.cpp.
References equals(), m_int16Type, m_int32Type, m_int8Type, m_uint16Type, m_uint32Type, and m_uint8Type.
Referenced by QQmlJSCodeGenerator::generate_Construct(), QQmlJSCodeGenerator::generate_LoadElement(), and QQmlJSCodeGenerator::generate_StoreElement().
bool QQmlJSTypeResolver::isNumeric | ( | const QQmlJSRegisterContent & | type | ) | const |
Definition at line 330 of file qqmljstyperesolver.cpp.
References containedType(), and isNumeric().
Referenced by canConvertForLiteralBinding(), canPrimitivelyConvertFromTo(), QQmlJSCodeGenerator::contentPointer(), QQmlJSCodeGenerator::contentType(), QQmlJSCodeGenerator::conversion(), QQmlJSCodeGenerator::convertStored(), QQmlJSCodeGenerator::generate_LoadElement(), QQmlJSTypePropagator::generate_LoadElement(), QQmlJSCodeGenerator::generate_StoreElement(), QQmlJSTypePropagator::generate_StoreElement(), isNumeric(), isPrimitive(), merge(), and typeForBinaryOperation().
bool QQmlJSTypeResolver::isNumeric | ( | const QQmlJSScope::ConstPtr & | type | ) | const |
Definition at line 353 of file qqmljstyperesolver.cpp.
References equals(), QQmlJSScope::ExtensionNamespace, m_numberPrototype, and QQmlJSUtils::searchBaseAndExtensionTypes().
bool QQmlJSTypeResolver::isOptionalType | ( | const QQmlJSRegisterContent & | content | ) | const |
Definition at line 889 of file qqmljstyperesolver.cpp.
References QQmlJSRegisterContent::conversionOrigins(), equals(), QQmlJSRegisterContent::isConversion(), m_voidType, and origins.
Referenced by extractNonVoidFromOptionalType().
|
inline |
Definition at line 86 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypePropagator::generate_LoadQmlContextPropertyLookup().
bool QQmlJSTypeResolver::isPrimitive | ( | const QQmlJSRegisterContent & | type | ) | const |
Definition at line 325 of file qqmljstyperesolver.cpp.
References containedType(), and isPrimitive().
Referenced by canHold(), canPopulate(), canPrimitivelyConvertFromTo(), QQmlJSCodeGenerator::conversion(), QQmlJSCodeGenerator::convertContained(), QQmlJSCodeGenerator::generate_SetLookup(), genericType(), isPrimitive(), and merge().
bool QQmlJSTypeResolver::isPrimitive | ( | const QQmlJSScope::ConstPtr & | type | ) | const |
Definition at line 346 of file qqmljstyperesolver.cpp.
References equals(), isNumeric(), m_boolType, m_jsPrimitiveType, m_nullType, m_stringType, and m_voidType.
bool QQmlJSTypeResolver::isSignedInteger | ( | const QQmlJSScope::ConstPtr & | type | ) | const |
Definition at line 363 of file qqmljstyperesolver.cpp.
References equals(), m_int16Type, m_int32Type, m_int64Type, and m_int8Type.
Referenced by QQmlJSCodeGenerator::convertStored(), QQmlJSTypePropagator::generate_LoadElement(), QQmlJSTypePropagator::generate_StoreElement(), and isIntegral().
bool QQmlJSTypeResolver::isTriviallyCopyable | ( | const QQmlJSScope::ConstPtr & | type | ) | const |
Definition at line 1250 of file qqmljstyperesolver.cpp.
References QQmlSA::EnumScope, equals(), m_boolType, m_floatType, m_int16Type, m_int32Type, m_int64Type, m_int8Type, m_metaObjectType, m_nullType, m_realType, m_uint16Type, m_uint32Type, m_uint64Type, m_uint8Type, and m_voidType.
Referenced by QQmlJSCodeGenerator::shouldMoveRegister().
bool QQmlJSTypeResolver::isUnsignedInteger | ( | const QQmlJSScope::ConstPtr & | type | ) | const |
Definition at line 371 of file qqmljstyperesolver.cpp.
References equals(), m_uint16Type, m_uint32Type, m_uint64Type, and m_uint8Type.
Referenced by QQmlJSCodeGenerator::convertStored(), QQmlJSCodeGenerator::generate_Construct(), QQmlJSCodeGenerator::generate_LoadElement(), QQmlJSTypePropagator::generate_LoadElement(), QQmlJSCodeGenerator::generate_StoreElement(), QQmlJSTypePropagator::generate_StoreElement(), isIntegral(), and merge().
QQmlJSRegisterContent QQmlJSTypeResolver::iteratorPointer | ( | const QQmlJSRegisterContent & | listType, |
QQmlJS::AST::ForEachType | type, | ||
int | lookupIndex ) const |
Definition at line 1673 of file qqmljstyperesolver.cpp.
References containedType(), QQmlJSRegisterContent::create(), QQmlJS::AST::In, QQmlJSRegisterContent::InvalidLookupIndex, iteratorPointer(), QQmlJSRegisterContent::ListIterator, m_forInIteratorPtr, m_forOfIteratorPtr, m_int32Type, QQmlJSMetaProperty::setPropertyName(), QQmlJSMetaProperty::setType(), QQmlJSMetaProperty::setTypeName(), storedType(), and valueType().
Referenced by QQmlJSTypePropagator::generate_GetIterator(), and iteratorPointer().
|
inline |
Definition at line 74 of file qqmljstyperesolver_p.h.
Referenced by consoleObject(), QQmlJSCodeGenerator::generate_CallQmlContextPropertyLookup(), QQmlJSTypePropagator::generate_Construct(), and mathObject().
|
inline |
Definition at line 70 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), QQmlJSCodeGenerator::contentPointer(), QQmlJSCodeGenerator::contentType(), QQmlJSCodeGenerator::conversion(), QQmlJSCodeGenerator::convertContained(), QQmlJSCodeGenerator::convertStored(), QQmlJSCodeGenerator::generate_As(), QQmlJSCodeGenerator::generate_DefineObjectLiteral(), QQmlJSCodeGenerator::generate_GetOptionalLookup(), QQmlJSCodeGenerator::generate_Mod(), QQmlJSCodeGenerator::generate_Ret(), QQmlJSCodeGenerator::generate_SetLookup(), merge(), and typeForBinaryOperation().
|
inline |
Definition at line 69 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::convertStored(), QQmlJSTypePropagator::generate_CallProperty(), QQmlJSTypePropagator::generate_CmpIn(), QQmlJSTypePropagator::generate_Construct(), QQmlJSTypePropagator::generate_GetIterator(), QQmlJSCodeGenerator::generate_GetOptionalLookup(), QQmlJSTypePropagator::generate_LoadElement(), QQmlJSTypePropagator::generate_LoadLocal(), QQmlJSCodeGenerator::generate_Ret(), QQmlJSTypePropagator::generate_StoreElement(), QQmlJSCodeGenerator::generate_ThrowException(), QQmlJSTypePropagator::generate_ThrowException(), memberType(), memberType(), merge(), registerContains(), scopedType(), and storedType().
|
protected |
Definition at line 1403 of file qqmljstyperesolver.cpp.
References QQmlJSRegisterContent::Builtin, QQmlJSRegisterContent::create(), QQmlJSRegisterContent::InvalidLookupIndex, QQmlJSMetaProperty::setIsWritable(), QQmlJSMetaProperty::setPropertyName(), QQmlJSMetaProperty::setType(), QQmlJSMetaProperty::setTypeName(), and sizeType().
Referenced by memberType().
|
inline |
Definition at line 71 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::convertStored(), QQmlJSCodeGenerator::generate_LoadElement(), and QQmlJSCodeGenerator::generate_StoreElement().
QQmlJSScope::ConstPtr QQmlJSTypeResolver::mathObject | ( | ) | const |
Definition at line 191 of file qqmljstyperesolver.cpp.
References jsGlobalObject(), QQmlJSScope::property(), and QQmlJSMetaProperty::type().
Referenced by QQmlJSTypePropagator::generate_CallProperty(), and QQmlJSCodeGenerator::generate_CallPropertyLookup().
|
protected |
Definition at line 1526 of file qqmljstyperesolver.cpp.
References checkEnums(), and QQmlJSUtils::searchBaseAndExtensionTypes().
Referenced by memberType().
QQmlJSRegisterContent QQmlJSTypeResolver::memberType | ( | const QQmlJSRegisterContent & | type, |
const QString & | name, | ||
int | lookupIndex = QQmlJSRegisterContent::InvalidLookupIndex ) const |
Definition at line 1541 of file qqmljstyperesolver.cpp.
References begin(), canHold(), QQmlJSRegisterContent::create(), QQmlJSRegisterContent::GenericObjectProperty, QQmlJSRegisterContent::InvalidLookupIndex, QQmlJSRegisterContent::isValid(), jsValueType(), QQmlJSLogger::log(), m_logger, memberEnumType(), memberType(), QQmlJSRegisterContent::ObjectEnum, QQmlJSRegisterContent::ObjectModulePrefix, origins, qmlPrefixedImportType, registerContentForName(), QQmlJSMetaProperty::setIsWritable(), QQmlJSMetaProperty::setPropertyName(), QQmlJSMetaProperty::setType(), QQmlJSMetaProperty::setTypeName(), storedType(), and QQmlJSRegisterContent::type().
Referenced by QQmlJSTypePropagator::generate_CallProperty(), QQmlJSTypePropagator::generate_StoreProperty(), and memberType().
|
protected |
Definition at line 1416 of file qqmljstyperesolver.cpp.
References QQmlJSScope::attachedType(), checkEnums(), QQmlJSRegisterContent::create(), equals(), QQmlJSScope::ExtensionNamespace, QQmlJSRegisterContent::ExtensionObjectMethod, QQmlJSRegisterContent::ExtensionObjectProperty, QQmlJSRegisterContent::GenericObjectProperty, genericType(), QQmlJSScope::hasOwnMethod(), QQmlJSScope::hasOwnProperty(), QQmlJSRegisterContent::JavaScriptObject, QQmlSA::JSFunctionScope, QQmlSA::JSLexicalScope, jsValueType(), lengthProperty(), QQmlJSLogger::log(), m_logger, metaObjectType(), methods, QQmlJSScope::NotExtension, QQmlJSRegisterContent::ObjectAttached, QQmlJSRegisterContent::ObjectMethod, QQmlJSRegisterContent::ObjectProperty, QQmlJSScope::ownJSIdentifier(), QQmlJSScope::ownMethods(), QQmlJSScope::ownProperty(), QQmlJSScope::parentScope(), qmlCompiler, QQmlJSScope::scopeType(), QQmlJSUtils::searchBaseAndExtensionTypes(), QQmlJSMetaProperty::setIsWritable(), QQmlJSMetaProperty::setPropertyName(), QQmlJSMetaProperty::setType(), QQmlJSMetaProperty::setTypeName(), storedType(), stringType(), typeForName(), variantMapType(), and varType().
QQmlJSRegisterContent QQmlJSTypeResolver::merge | ( | const QQmlJSRegisterContent & | a, |
const QQmlJSRegisterContent & | b ) const |
Definition at line 723 of file qqmljstyperesolver.cpp.
References containedType(), QQmlJSRegisterContent::create(), erase(), merge(), mergeVariants(), and origins.
Referenced by adjustTrackedType(), QQmlJSTypePropagator::generate_As(), QQmlJSTypePropagator::generate_IteratorNext(), QQmlJSTypePropagator::generate_LoadElement(), QQmlJSCodeGenerator::generate_SetLookup(), merge(), and typeForBinaryOperation().
QQmlJSScope::ConstPtr QQmlJSTypeResolver::merge | ( | const QQmlJSScope::ConstPtr & | a, |
const QQmlJSScope::ConstPtr & | b ) const |
Definition at line 762 of file qqmljstyperesolver.cpp.
References QQmlJSScope::baseType(), boolType(), equals(), int32Type(), isIntegral(), isNumeric(), isPrimitive(), isUnsignedInteger(), jsPrimitiveType(), jsValueType(), nullType(), realType(), uint32Type(), and varType().
|
inline |
Definition at line 72 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), QQmlJSCodeGenerator::generate_As(), QQmlJSTypePropagator::generate_As(), memberType(), and registerContentForName().
|
inline |
Definition at line 99 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::metaObject(), and QQmlJSCodeGenerator::metaType().
|
inline |
Definition at line 46 of file qqmljstyperesolver_p.h.
Referenced by canCompareWithQObject(), QQmlJSCodeGenerator::convertStored(), QQmlJSCodeGenerator::generate_CmpEqNull(), QQmlJSCodeGenerator::generate_CmpNeNull(), QQmlJSCodeGenerator::generate_LoadConst(), QQmlJSCodeGenerator::generate_LoadNull(), QQmlJSTypePropagator::generate_LoadNull(), QQmlJSCodeGenerator::generate_MoveConst(), isTypeStorable(), QQmlJSMetaPropertyBinding::literalType(), merge(), and typeForConst().
|
inline |
Definition at line 181 of file qqmljstyperesolver_p.h.
QQmlJSRegisterContent QQmlJSTypeResolver::original | ( | const QQmlJSRegisterContent & | type | ) | const |
Definition at line 561 of file qqmljstyperesolver.cpp.
References originalType(), and transformed().
Referenced by QQmlJSCodeGenerator::AccumulatorConverter::AccumulatorConverter(), QQmlJSCodeGenerator::convertContained(), QQmlJSCodeGenerator::generate_As(), QQmlJSCodeGenerator::generate_Construct(), QQmlJSCodeGenerator::generate_Exp(), QQmlJSCodeGenerator::generate_LoadQmlContextPropertyLookup(), and QQmlJSCodeGenerator::run().
QQmlJSScope::ConstPtr QQmlJSTypeResolver::originalContainedType | ( | const QQmlJSRegisterContent & | container | ) | const |
Definition at line 578 of file qqmljstyperesolver.cpp.
References containedType(), and originalType().
Referenced by QQmlJSCodeGenerator::AccumulatorConverter::AccumulatorConverter(), QQmlJSCodeGenerator::generate_As(), and QQmlJSCodeGenerator::run().
QQmlJSScope::ConstPtr QQmlJSTypeResolver::originalType | ( | const QQmlJSScope::ConstPtr & | type | ) | const |
Definition at line 1739 of file qqmljstyperesolver.cpp.
References QSet< T >::end(), QSet< T >::find(), it, and m_trackedTypes.
Referenced by QQmlJSCodeGenerator::AccumulatorConverter::AccumulatorConverter(), QQmlJSCodeGenerator::generate_SetLookup(), original(), and originalContainedType().
|
inline |
Definition at line 171 of file qqmljstyperesolver_p.h.
|
inline |
Definition at line 76 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSFunctionInitializer::run().
|
inline |
Definition at line 75 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::generate_ConvertThisToObject(), QQmlJSTypePropagator::generate_ConvertThisToObject(), and QQmlJSCodeGenerator::generate_LoadElement().
|
inline |
Definition at line 47 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::convertStored(), QQmlJSCodeGenerator::generate_Construct(), QQmlJSCodeGenerator::generate_LoadConst(), QQmlJSTypePropagator::generate_LoadElement(), QQmlJSCodeGenerator::generate_MoveConst(), QQmlJSTypePropagator::generate_StoreElement(), merge(), typeForArithmeticUnaryOperation(), typeForBinaryOperation(), and typeForConst().
bool QQmlJSTypeResolver::registerContains | ( | const QQmlJSRegisterContent & | reg, |
const QQmlJSScope::ConstPtr & | type ) const |
Definition at line 1703 of file qqmljstyperesolver.cpp.
References equals(), and jsValueType().
Referenced by QQmlJSCodeGenerator::contentPointer(), QQmlJSCodeGenerator::conversion(), QQmlJSTypePropagator::generate_CallProperty(), QQmlJSCodeGenerator::generate_Construct(), QQmlJSTypePropagator::generate_DeadTemporalZoneCheck(), QQmlJSCodeGenerator::generate_DefineObjectLiteral(), QQmlJSTypePropagator::generate_LoadElement(), QQmlJSCodeGenerator::generate_Ret(), QQmlJSTypePropagator::generate_Ret(), QQmlJSCodeGenerator::generate_SetLookup(), QQmlJSCodeGenerator::generateReturnError(), QQmlJSCodeGenerator::getLookupPreparation(), and QQmlJSCodeGenerator::setLookupPreparation().
|
protected |
Definition at line 493 of file qqmljstyperesolver.cpp.
References canAddressValueTypes(), QQmlJSRegisterContent::create(), genericType(), QQmlJSRegisterContent::InvalidLookupIndex, QQmlJSLogger::log(), m_logger, metaObjectType(), QQmlJSRegisterContent::MetaType, QQmlJSRegisterContent::ObjectAttached, qmlCompiler, QQmlJSRegisterContent::ScopeAttached, QQmlJSRegisterContent::Script, QQmlJSRegisterContent::Singleton, storedType(), and typeForName().
Referenced by memberType().
bool QQmlJSTypeResolver::registerIsStoredIn | ( | const QQmlJSRegisterContent & | reg, |
const QQmlJSScope::ConstPtr & | type ) const |
Definition at line 1697 of file qqmljstyperesolver.cpp.
References equals().
Referenced by QQmlJSCodeGenerator::AccumulatorConverter::AccumulatorConverter(), QQmlJSCodeGenerator::contentPointer(), QQmlJSCodeGenerator::contentType(), QQmlJSCodeGenerator::conversion(), QQmlJSCodeGenerator::convertContained(), QQmlJSCodeGenerator::generate_As(), QQmlJSCodeGenerator::generate_LoadElement(), QQmlJSCodeGenerator::generate_Ret(), QQmlJSCodeGenerator::generate_StoreElement(), QQmlJSTypePropagator::generate_StoreNameCommon(), QQmlJSCodeGenerator::getLookupPreparation(), QQmlJSCodeGenerator::run(), and QQmlJSCodeGenerator::setLookupPreparation().
QQmlJSRegisterContent QQmlJSTypeResolver::returnType | ( | const QQmlJSScope::ConstPtr & | type, |
QQmlJSRegisterContent::ContentVariant | variant, | ||
const QQmlJSScope::ConstPtr & | scope ) const |
Definition at line 1663 of file qqmljstyperesolver.cpp.
References QQmlJSRegisterContent::create(), QQmlJSRegisterContent::InvalidLookupIndex, QQmlJSRegisterContent::JavaScriptReturnValue, QQmlJSRegisterContent::MethodReturnValue, Q_ASSERT, storedType(), and variant.
Referenced by QQmlJSTypePropagator::generate_CallProperty().
QQmlJSRegisterContent QQmlJSTypeResolver::scopedType | ( | const QQmlJSScope::ConstPtr & | scope, |
const QString & | name, | ||
int | lookupIndex = QQmlJSRegisterContent::InvalidLookupIndex, | ||
QQmlJSScopesByIdOptions | options = Default ) const |
Definition at line 1027 of file qqmljstyperesolver.cpp.
References base, child, QQmlJSRegisterContent::create(), QQmlJSScope::defaultPropertyName(), equals(), QQmlJSScope::ExtensionNamespace, QQmlJSScope::findCurrentQMLScope(), if(), QQmlJSRegisterContent::InvalidLookupIndex, QString::isEmpty(), jsValueType(), m_objectsById, methods, QQmlSA::Object, QQmlJSRegisterContent::ObjectById, QQmlJSScope::propertyBindings(), QQmlJSScopesById::scope(), scopeContentVariant(), QQmlJSUtils::searchBaseAndExtensionTypes(), and storedType().
Referenced by QQmlJSTypePropagator::generate_LoadName(), QQmlJSTypePropagator::generate_LoadQmlContextPropertyLookup(), QQmlJSTypePropagator::generate_StoreNameCommon(), QQmlJSCodeGenerator::generate_StoreNameSloppy(), and QQmlJSUtils::resolveAlias().
QQmlJSScope::ConstPtr QQmlJSTypeResolver::scopeForLocation | ( | const QV4::CompiledData::Location & | location | ) | const |
Definition at line 202 of file qqmljstyperesolver.cpp.
References m_objectsByLocation, and qCDebug.
QQmlJSMetaMethod QQmlJSTypeResolver::selectConstructor | ( | const QQmlJSScope::ConstPtr & | type, |
const QQmlJSScope::ConstPtr & | argument, | ||
bool * | isExtension ) const |
Definition at line 1175 of file qqmljstyperesolver.cpp.
References canHold(), canPrimitivelyConvertFromTo(), equals(), extension(), QQmlJSScope::extensionType(), QQmlJSMetaMethod::Invalid, QQmlJSMetaMethod::isValid(), method, Q_ASSERT, and QQmlJSScope::AnnotatedScope::scope.
Referenced by adjustTrackedType(), adjustTrackedType(), canConvertFromTo(), QQmlJSCodeGenerator::convertContained(), and QQmlJSCodeGenerator::convertStored().
Definition at line 173 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSLinter::lintFile().
|
inline |
Definition at line 170 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSLinter::lintFile().
|
inline |
Definition at line 185 of file qqmljstyperesolver_p.h.
|
inline |
Definition at line 57 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::generate_Construct(), QQmlJSTypePropagator::generate_LoadElement(), and lengthProperty().
QQmlJSScope::ConstPtr QQmlJSTypeResolver::storedType | ( | const QQmlJSScope::ConstPtr & | type | ) | const |
Definition at line 1719 of file qqmljstyperesolver.cpp.
References equals(), genericType(), jsValueType(), QQmlJSScope::nonCompositeBaseType(), and voidType().
Referenced by builtinType(), cast(), checkEnums(), globalType(), iteratorPointer(), memberType(), memberType(), registerContentForName(), returnType(), scopedType(), and valueType().
|
inline |
Definition at line 60 of file qqmljstyperesolver_p.h.
Referenced by canConvertForLiteralBinding().
|
inline |
Definition at line 59 of file qqmljstyperesolver_p.h.
Referenced by canConvertForLiteralBinding(), QQmlJSCodeGenerator::conversion(), QQmlJSCodeGenerator::convertStored(), QQmlJSTypePropagator::generate_CallProperty(), QQmlJSCodeGenerator::generate_CallPropertyLookup(), QQmlJSCodeGenerator::generate_DefineObjectLiteral(), QQmlJSTypePropagator::generate_DefineObjectLiteral(), QQmlJSCodeGenerator::generate_LoadElement(), QQmlJSTypePropagator::generate_LoadElement(), QQmlJSCodeGenerator::generate_LoadRuntimeString(), QQmlJSTypePropagator::generate_LoadRuntimeString(), QQmlJSTypePropagator::generate_TypeofName(), QQmlJSTypePropagator::generate_TypeofValue(), QQmlJSMetaPropertyBinding::literalType(), memberType(), and typeForBinaryOperation().
|
inline |
Definition at line 65 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::convertStored().
QQmlJSRegisterContent QQmlJSTypeResolver::tracked | ( | const QQmlJSRegisterContent & | type | ) | const |
Definition at line 566 of file qqmljstyperesolver.cpp.
References trackedType(), and transformed().
Referenced by adjustOriginalType(), adjustTrackedType(), adjustTrackedType(), QQmlJSTypePropagator::generate_DefineArray(), QQmlJSTypePropagator::generate_DefineObjectLiteral(), and QQmlJSFunctionInitializer::run().
QQmlJSScope::ConstPtr QQmlJSTypeResolver::trackedContainedType | ( | const QQmlJSRegisterContent & | container | ) | const |
Definition at line 571 of file qqmljstyperesolver.cpp.
References containedType(), and m_trackedTypes.
QQmlJSScope::ConstPtr QQmlJSTypeResolver::trackedType | ( | const QQmlJSScope::ConstPtr & | type | ) | const |
Definition at line 416 of file qqmljstyperesolver.cpp.
References QQmlJSScope::clone(), DoNotCloneTypes, QSet< T >::end(), QSet< T >::find(), it, m_cloneMode, and m_trackedTypes.
Referenced by tracked(), and transformed().
|
protected |
Definition at line 430 of file qqmljstyperesolver.cpp.
References QQmlJSRegisterContent::baseLookupIndex(), QQmlJSRegisterContent::conversionOrigins(), QQmlJSRegisterContent::conversionResult(), QQmlJSRegisterContent::conversionResultScope(), QQmlJSRegisterContent::create(), QQmlJSRegisterContent::enumeration(), QQmlJSRegisterContent::enumMember(), QQmlJSRegisterContent::importNamespace(), QQmlJSRegisterContent::isConversion(), QQmlJSRegisterContent::isEnumeration(), QQmlJSRegisterContent::isImportNamespace(), QQmlJSRegisterContent::isMethod(), QQmlJSRegisterContent::isProperty(), QQmlJSRegisterContent::isType(), QQmlJSRegisterContent::method(), origins, QQmlJSRegisterContent::property(), QQmlJSRegisterContent::resultLookupIndex(), QQmlJSRegisterContent::scopeType(), QQmlJSMetaEnum::setType(), QQmlJSMetaProperty::setType(), QQmlJSRegisterContent::storedType(), this, trackedType(), QQmlJSMetaEnum::type(), QQmlJSMetaProperty::type(), QQmlJSRegisterContent::type(), and QQmlJSRegisterContent::variant().
Referenced by original(), and tracked().
QQmlJSRegisterContent QQmlJSTypeResolver::typeForArithmeticUnaryOperation | ( | UnaryOperator | op, |
const QQmlJSRegisterContent & | operand ) const |
Definition at line 304 of file qqmljstyperesolver.cpp.
References boolType(), builtinType(), Complement, containedType(), equals(), int32Type(), isIntegral(), Not, Plus, Q_FALLTHROUGH, and realType().
QQmlJSRegisterContent QQmlJSTypeResolver::typeForBinaryOperation | ( | QSOperator::Op | oper, |
const QQmlJSRegisterContent & | left, | ||
const QQmlJSRegisterContent & | right ) const |
Definition at line 247 of file qqmljstyperesolver.cpp.
References QSOperator::Add, QSOperator::As, QSOperator::BitAnd, QSOperator::BitOr, QSOperator::BitXor, boolType(), builtinType(), containedType(), QSOperator::Div, QSOperator::Equal, equals(), QSOperator::Exp, QSOperator::Ge, globalType(), QSOperator::Gt, QSOperator::In, int32Type(), isNumeric(), jsPrimitiveType(), QSOperator::Le, QSOperator::LShift, QSOperator::Lt, merge(), QSOperator::Mod, QSOperator::Mul, QSOperator::NotEqual, Q_ASSERT, realType(), QSOperator::RShift, QSOperator::StrictEqual, QSOperator::StrictNotEqual, stringType(), QSOperator::Sub, uint32Type(), and QSOperator::URShift.
Referenced by QQmlJSTypePropagator::generate_CmpEqInt(), and QQmlJSTypePropagator::generate_CmpNeInt().
QQmlJSScope::ConstPtr QQmlJSTypeResolver::typeForConst | ( | QV4::ReturnedValue | rv | ) | const |
Definition at line 222 of file qqmljstyperesolver.cpp.
References boolType(), emptyType(), QV4::Value::fromReturnedValue(), int32Type(), nullType(), realType(), and voidType().
Referenced by QQmlJSCodeGenerator::generate_LoadConst(), QQmlJSTypePropagator::generate_LoadConst(), and QQmlJSTypePropagator::generate_MoveConst().
|
inline |
Definition at line 95 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSMetaPropertyBinding::literalType(), memberType(), registerContentForName(), and typeFromAST().
QQmlJSScope::ConstPtr QQmlJSTypeResolver::typeFromAST | ( | QQmlJS::AST::Type * | type | ) | const |
Definition at line 210 of file qqmljstyperesolver.cpp.
References QmlIR::IRBuilder::asString(), m_imports, QQmlJS::ContextualTypes::type(), and typeForName().
|
inline |
Definition at line 52 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::convertStored().
|
inline |
Definition at line 54 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypePropagator::generate_LoadElement(), QQmlJSTypePropagator::generate_StoreElement(), merge(), and typeForBinaryOperation().
|
inline |
Definition at line 56 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::convertStored().
|
inline |
Definition at line 50 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::convertStored().
|
inline |
Definition at line 62 of file qqmljstyperesolver_p.h.
Referenced by canCompareWithQUrl(), canConvertForLiteralBinding(), and QQmlJSCodeGenerator::convertStored().
QQmlJSRegisterContent QQmlJSTypeResolver::valueType | ( | const QQmlJSRegisterContent & | list | ) | const |
Definition at line 1615 of file qqmljstyperesolver.cpp.
References QQmlJSScope::accessSemantics(), QQmlJSRegisterContent::create(), equals(), QQmlJSRegisterContent::InvalidLookupIndex, list, QQmlJSRegisterContent::ListValue, m_forInIteratorPtr, m_forOfIteratorPtr, m_jsValueType, m_sizeType, m_stringType, m_varType, property, storedType(), QQmlJSScope::valueType(), and valueType().
Referenced by QQmlJSCodeGenerator::generate_IteratorNext(), QQmlJSTypePropagator::generate_IteratorNext(), QQmlJSCodeGenerator::generate_LoadElement(), QQmlJSTypePropagator::generate_LoadElement(), QQmlJSCodeGenerator::generate_StoreElement(), QQmlJSTypePropagator::generate_StoreElement(), iteratorPointer(), and valueType().
|
inline |
Definition at line 66 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::generate_Construct(), and QQmlJSTypePropagator::generate_DefineArray().
|
inline |
Definition at line 67 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::generate_DefineObjectLiteral(), QQmlJSTypePropagator::generate_DefineObjectLiteral(), and memberType().
|
inline |
Definition at line 68 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::AccumulatorConverter::AccumulatorConverter(), canStrictlyCompareWithVar(), QQmlJSCodeGenerator::contentPointer(), QQmlJSCodeGenerator::contentType(), QQmlJSCodeGenerator::convertContained(), QQmlJSCodeGenerator::convertStored(), QQmlJSCodeGenerator::generate_As(), QQmlJSTypePropagator::generate_CallProperty(), QQmlJSTypePropagator::generate_DefineArray(), QQmlJSCodeGenerator::generate_DefineObjectLiteral(), QQmlJSTypePropagator::generate_DefineObjectLiteral(), QQmlJSCodeGenerator::generate_GetOptionalLookup(), QQmlJSCodeGenerator::generate_Ret(), QQmlJSTypePropagator::generate_StoreNameCommon(), QQmlJSTypePropagator::generate_StoreProperty(), QQmlJSCodeGenerator::getLookupPreparation(), memberType(), merge(), QQmlJSFunctionInitializer::run(), and QQmlJSCodeGenerator::setLookupPreparation().
|
inline |
Definition at line 44 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSCodeGenerator::convertStored(), QQmlJSCodeGenerator::generate_As(), QQmlJSTypePropagator::generate_As(), QQmlJSCodeGenerator::generate_IteratorNext(), QQmlJSTypePropagator::generate_IteratorNext(), QQmlJSCodeGenerator::generate_LoadConst(), QQmlJSCodeGenerator::generate_LoadElement(), QQmlJSTypePropagator::generate_LoadElement(), QQmlJSTypePropagator::generate_LoadQmlContextPropertyLookup(), QQmlJSCodeGenerator::generate_LoadUndefined(), QQmlJSTypePropagator::generate_LoadUndefined(), QQmlJSCodeGenerator::generate_MoveConst(), QQmlJSCodeGenerator::generate_Ret(), QQmlJSTypePropagator::generate_Ret(), QQmlJSTypePropagator::generate_StoreNameCommon(), QQmlJSCodeGenerator::generateReturnError(), isTypeStorable(), QQmlJSCodeGenerator::run(), storedType(), and typeForConst().
|
protected |
Definition at line 254 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver().
|
protected |
Definition at line 266 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), canPrimitivelyConvertFromTo(), genericType(), isPrimitive(), and isTriviallyCopyable().
|
protected |
Definition at line 269 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), canPrimitivelyConvertFromTo(), and genericType().
|
protected |
Definition at line 295 of file qqmljstyperesolver_p.h.
Referenced by adjustOriginalType(), adjustTrackedType(), adjustTrackedType(), generalizeType(), and trackedType().
|
protected |
Definition at line 271 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), canPrimitivelyConvertFromTo(), and genericType().
|
protected |
Definition at line 272 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), canPrimitivelyConvertFromTo(), and genericType().
|
protected |
Definition at line 251 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver().
|
protected |
Definition at line 256 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), genericType(), and isTriviallyCopyable().
|
protected |
Definition at line 286 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), genericType(), iteratorPointer(), and valueType().
|
protected |
Definition at line 287 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), genericType(), iteratorPointer(), and valueType().
|
protected |
Definition at line 284 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver().
|
protected |
Definition at line 291 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), init(), and typeFromAST().
|
protected |
Definition at line 259 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), genericType(), isNativeArrayIndex(), isSignedInteger(), and isTriviallyCopyable().
|
protected |
Definition at line 261 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), genericType(), isNativeArrayIndex(), isSignedInteger(), isTriviallyCopyable(), and iteratorPointer().
|
protected |
Definition at line 263 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), genericType(), isSignedInteger(), and isTriviallyCopyable().
|
protected |
Definition at line 257 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), genericType(), isNativeArrayIndex(), isSignedInteger(), and isTriviallyCopyable().
|
protected |
Definition at line 285 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver().
|
protected |
Definition at line 278 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), canHold(), canHoldUndefined(), canPrimitivelyConvertFromTo(), genericType(), and isPrimitive().
|
protected |
Definition at line 277 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), canHold(), canHoldUndefined(), canPrimitivelyConvertFromTo(), genericType(), and valueType().
|
protected |
Definition at line 279 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), canHold(), and genericType().
|
protected |
Definition at line 296 of file qqmljstyperesolver_p.h.
Referenced by genericType(), init(), memberType(), memberType(), and registerContentForName().
|
protected |
Definition at line 283 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), genericType(), and isTriviallyCopyable().
|
protected |
Definition at line 252 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), canPrimitivelyConvertFromTo(), isPrimitive(), and isTriviallyCopyable().
|
protected |
Definition at line 253 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), and isNumeric().
|
protected |
Definition at line 289 of file qqmljstyperesolver_p.h.
Referenced by init(), and scopedType().
|
protected |
Definition at line 290 of file qqmljstyperesolver_p.h.
Referenced by init(), and scopeForLocation().
|
protected |
Definition at line 294 of file qqmljstyperesolver_p.h.
|
protected |
Definition at line 281 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), canHold(), and genericType().
|
protected |
Definition at line 280 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), and genericType().
|
protected |
Definition at line 282 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), and canPrimitivelyConvertFromTo().
|
protected |
Definition at line 255 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), canPrimitivelyConvertFromTo(), genericType(), and isTriviallyCopyable().
|
protected |
Definition at line 292 of file qqmljstyperesolver_p.h.
Referenced by init().
|
protected |
Definition at line 265 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), and valueType().
|
protected |
Definition at line 268 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), areEquivalentLists(), and genericType().
|
protected |
Definition at line 267 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), areEquivalentLists(), canConvertFromTo(), canPrimitivelyConvertFromTo(), genericType(), isPrimitive(), and valueType().
|
protected |
Definition at line 273 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), canPrimitivelyConvertFromTo(), and genericType().
|
protected |
Definition at line 311 of file qqmljstyperesolver_p.h.
Referenced by adjustOriginalType(), adjustTrackedType(), adjustTrackedType(), comparableType(), generalizeType(), originalType(), trackedContainedType(), and trackedType().
|
protected |
Definition at line 260 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), genericType(), isNativeArrayIndex(), isTriviallyCopyable(), and isUnsignedInteger().
|
protected |
Definition at line 262 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), genericType(), isNativeArrayIndex(), isTriviallyCopyable(), and isUnsignedInteger().
|
protected |
Definition at line 264 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), genericType(), isTriviallyCopyable(), and isUnsignedInteger().
|
protected |
Definition at line 258 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), genericType(), isNativeArrayIndex(), isTriviallyCopyable(), and isUnsignedInteger().
|
protected |
Definition at line 270 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), canPrimitivelyConvertFromTo(), and genericType().
|
protected |
Definition at line 274 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), areEquivalentLists(), canHold(), canPrimitivelyConvertFromTo(), and genericType().
|
protected |
Definition at line 275 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), and genericType().
|
protected |
Definition at line 276 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), areEquivalentLists(), canHold(), canHoldUndefined(), canPrimitivelyConvertFromTo(), genericType(), and valueType().
|
protected |
Definition at line 250 of file qqmljstyperesolver_p.h.
Referenced by QQmlJSTypeResolver(), canHoldUndefined(), canPrimitivelyConvertFromTo(), extractNonVoidFromOptionalType(), isOptionalType(), isPrimitive(), and isTriviallyCopyable().