![]() |
Qt 6.x
The Qt SDK
|
#include <qqmljstypepropagator_p.h>
QQmlJSTypePropagator is the initial pass that performs the type inference and annotates every register in use at any instruction with the possible types it may hold. This includes information on how and in what scope the values are retrieved. These annotations may be used by further compile passes for refinement or code generation.
Definition at line 27 of file qqmljstypepropagator_p.h.
QQmlJSTypePropagator::QQmlJSTypePropagator | ( | const QV4::Compiler::JSUnitGenerator * | unitGenerator, |
const QQmlJSTypeResolver * | typeResolver, | ||
QQmlJSLogger * | logger, | ||
QQmlSA::PassManager * | passManager = nullptr |
||
) |
Definition at line 29 of file qqmljstypepropagator.cpp.
bool QQmlJSTypePropagator::checkForEnumProblems | ( | const QQmlJSRegisterContent & | base, |
const QString & | propertyName | ||
) | const |
Definition at line 677 of file qqmljstypepropagator.cpp.
References base, QQmlJSUtils::didYouMean(), QQmlJSLogger::log(), QQmlJSCompilePass::m_logger, qmlMissingEnumEntry, and qmlRestrictedType.
Referenced by generate_CallProperty().
|
overridevirtual |
Implements QV4::Moth::ByteCodeHandler.
Definition at line 2490 of file qqmljstypepropagator.cpp.
References QQmlJSCompilePass::Accumulator, QQmlJSCompilePass::InstructionAnnotation::changedRegister, QQmlJSCompilePass::InstructionAnnotation::changedRegisterIndex, QV4::Moth::ByteCodeHandler::currentInstructionOffset(), QQmlJSCompilePass::InstructionAnnotation::hasSideEffects, QQmlJSCompilePass::InvalidRegister, QQmlJSCompilePass::InstructionAnnotation::isRename, QQmlJS::DiagnosticMessage::isValid(), QQmlJSCompilePass::m_error, Q_ASSERT, QQmlJSCompilePass::InstructionAnnotation::readRegisters, and QQmlJSCompilePass::setError().
|
override |
Definition at line 2318 of file qqmljstypepropagator.cpp.
References QSOperator::Add.
|
override |
Definition at line 2208 of file qqmljstypepropagator.cpp.
References QQmlJSScope::accessSemantics(), arg, QQmlJSTypeResolver::canAddressValueTypes(), QQmlJSTypeResolver::containedType(), QQmlJSTypeResolver::globalType(), QQmlJSScope::isComposite(), QQmlJSCompilePass::m_typeResolver, QQmlJSTypeResolver::merge(), QQmlJSTypeResolver::metaObjectType(), QQmlJSRegisterContent::MetaType, output, QQmlJSRegisterContent::ScopeAttached, QQmlJSCompilePass::setError(), and QQmlJSTypeResolver::voidType().
|
override |
Definition at line 2323 of file qqmljstypepropagator.cpp.
References QSOperator::BitAnd.
|
override |
Definition at line 2353 of file qqmljstypepropagator.cpp.
References QSOperator::BitAnd, and Q_UNUSED.
|
override |
Definition at line 2328 of file qqmljstypepropagator.cpp.
References QSOperator::BitOr.
|
override |
Definition at line 2359 of file qqmljstypepropagator.cpp.
References QSOperator::BitOr, and Q_UNUSED.
|
override |
Definition at line 2333 of file qqmljstypepropagator.cpp.
References QSOperator::BitXor.
|
override |
Definition at line 2365 of file qqmljstypepropagator.cpp.
References QSOperator::BitXor, and Q_UNUSED.
|
override |
Definition at line 1668 of file qqmljstypepropagator.cpp.
References QV4::Compiler::JSUnitGenerator::lookupName(), and QQmlJSCompilePass::m_jsUnitGenerator.
|
override |
Definition at line 1630 of file qqmljstypepropagator.cpp.
References QQmlJSCompilePass::m_jsUnitGenerator, and QV4::Compiler::JSUnitGenerator::stringForIndex().
|
override |
Definition at line 1635 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 1023 of file qqmljstypepropagator.cpp.
References arg, QQmlJSTypeResolver::arrayPrototype(), base, checkForEnumProblems(), QQmlJSTypeResolver::containedType(), QQmlJSTypeResolver::containedTypeName(), QQmlJSScope::createQQmlSAElement(), QQmlSA::SourceLocationPrivate::createQQmlSASourceLocation(), QQmlJSUtils::didYouMean(), QQmlJSTypeResolver::equals(), QQmlJSTypeResolver::genericType(), QQmlJSTypeResolver::globalType(), i, isLoggingMethod(), QQmlJSScope::isReferenceType(), QQmlJSTypeResolver::jsGlobalObject(), QQmlJSTypeResolver::jsValueType(), QQmlJSLogger::log(), QQmlJSCompilePass::m_function, QQmlJSCompilePass::m_jsUnitGenerator, QQmlJSCompilePass::m_logger, QQmlJSCompilePass::m_typeResolver, QQmlJSTypeResolver::memberType(), QQmlJSScope::property(), Q_ASSERT, qmlMissingProperty, QQmlJSCompilePass::Function::qmlScope, QQmlJSTypeResolver::realType(), QQmlJSTypeResolver::registerContains(), QQmlJSCompilePass::setError(), QV4::Compiler::JSUnitGenerator::stringForIndex(), QQmlJSTypeResolver::stringType(), QQmlJSMetaProperty::type(), QQmlJSTypeResolver::varType(), and QQmlJSTypeResolver::voidType().
Referenced by generate_CallPropertyLookup().
|
override |
Definition at line 1624 of file qqmljstypepropagator.cpp.
References base, generate_CallProperty(), QV4::Compiler::JSUnitGenerator::lookupNameIndex(), and QQmlJSCompilePass::m_jsUnitGenerator.
|
override |
Definition at line 1673 of file qqmljstypepropagator.cpp.
References QV4::Compiler::JSUnitGenerator::lookupName(), QQmlJSCompilePass::m_function, QQmlJSCompilePass::m_jsUnitGenerator, and QQmlJSCompilePass::Function::qmlScope.
|
override |
Definition at line 998 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 1007 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 1680 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 2016 of file qqmljstypepropagator.cpp.
|
override |
Definition at line 1805 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED.
|
override |
Definition at line 2142 of file qqmljstypepropagator.cpp.
References QSOperator::Equal.
|
override |
Definition at line 2124 of file qqmljstypepropagator.cpp.
References QSOperator::Equal, QQmlJSTypeResolver::globalType(), QQmlJSTypeResolver::int32Type(), QQmlJSCompilePass::m_typeResolver, Q_UNUSED, and QQmlJSTypeResolver::typeForBinaryOperation().
|
override |
Definition at line 2112 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::boolType(), QQmlJSTypeResolver::globalType(), and QQmlJSCompilePass::m_typeResolver.
|
override |
Definition at line 2160 of file qqmljstypepropagator.cpp.
References QSOperator::Ge.
|
override |
Definition at line 2154 of file qqmljstypepropagator.cpp.
References QSOperator::Gt.
|
override |
Definition at line 2190 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::globalType(), QSOperator::In, QQmlJSTypeResolver::jsValueType(), and QQmlJSCompilePass::m_typeResolver.
|
override |
Definition at line 2202 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 2172 of file qqmljstypepropagator.cpp.
References QSOperator::Le.
|
override |
Definition at line 2166 of file qqmljstypepropagator.cpp.
References QSOperator::Lt.
|
override |
Definition at line 2148 of file qqmljstypepropagator.cpp.
References QSOperator::NotEqual.
|
override |
Definition at line 2133 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::globalType(), QQmlJSTypeResolver::int32Type(), QQmlJSCompilePass::m_typeResolver, QSOperator::NotEqual, Q_UNUSED, and QQmlJSTypeResolver::typeForBinaryOperation().
|
override |
Definition at line 2118 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::boolType(), QQmlJSTypeResolver::globalType(), and QQmlJSCompilePass::m_typeResolver.
|
override |
Definition at line 2178 of file qqmljstypepropagator.cpp.
References QSOperator::StrictEqual.
|
override |
Definition at line 2184 of file qqmljstypepropagator.cpp.
References QSOperator::StrictNotEqual.
|
override |
Definition at line 1700 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::globalType(), QQmlJSTypeResolver::jsValueType(), QQmlJSCompilePass::m_typeResolver, and Q_UNUSED.
|
override |
Definition at line 1711 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 1956 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, QQmlJSTypeResolver::qObjectType(), and QQmlJSCompilePass::This.
|
override |
Definition at line 1779 of file qqmljstypepropagator.cpp.
|
override |
Definition at line 1932 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 1940 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED.
|
override |
Definition at line 1950 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 1945 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED.
|
override |
Definition at line 1741 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::emptyType(), QQmlJSTypeResolver::equals(), QQmlJSCompilePass::m_jsUnitGenerator, QQmlJSCompilePass::m_typeResolver, QQmlJSTypeResolver::registerContains(), QQmlJSCompilePass::setError(), and QV4::Compiler::JSUnitGenerator::stringForIndex().
|
override |
Definition at line 123 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED.
|
override |
Definition at line 1884 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 2291 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::Decrement.
|
override |
Definition at line 1891 of file qqmljstypepropagator.cpp.
References args, QQmlJSTypeResolver::globalType(), i, QQmlJSCompilePass::m_typeResolver, QQmlJSTypeResolver::tracked(), QQmlJSTypeResolver::variantListType(), and QQmlJSTypeResolver::varType().
|
override |
Definition at line 1902 of file qqmljstypepropagator.cpp.
References args, QQmlJSTypeResolver::globalType(), i, QV4::Compiler::JSUnitGenerator::jsClassSize(), QQmlJSCompilePass::m_jsUnitGenerator, QQmlJSCompilePass::m_typeResolver, Q_ASSERT, QQmlJSTypeResolver::stringType(), QQmlJSTypeResolver::tracked(), QQmlJSTypeResolver::variantMapType(), and QQmlJSTypeResolver::varType().
|
override |
Definition at line 1867 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 1860 of file qqmljstypepropagator.cpp.
References base, INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 1855 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED.
|
override |
Definition at line 2399 of file qqmljstypepropagator.cpp.
References QSOperator::Div.
|
override |
Definition at line 2389 of file qqmljstypepropagator.cpp.
References QSOperator::Exp.
|
override |
Definition at line 1768 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED.
|
override |
Definition at line 1829 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 908 of file qqmljstypepropagator.cpp.
References QV4::Compiler::JSUnitGenerator::lookupName(), and QQmlJSCompilePass::m_jsUnitGenerator.
|
override |
Definition at line 913 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 2425 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 2286 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::Increment.
|
override |
Definition at line 2414 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::emptyType(), QQmlJSTypeResolver::globalType(), and QQmlJSCompilePass::m_typeResolver.
|
override |
Definition at line 1849 of file qqmljstypepropagator.cpp.
References done, INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 1835 of file qqmljstypepropagator.cpp.
References done, INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 1842 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 1971 of file qqmljstypepropagator.cpp.
|
override |
Definition at line 1991 of file qqmljstypepropagator.cpp.
References arg, QQmlJSTypeResolver::boolType(), QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, and QQmlJSCompilePass::setError().
|
override |
Definition at line 2004 of file qqmljstypepropagator.cpp.
|
override |
Definition at line 2010 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 1978 of file qqmljstypepropagator.cpp.
References arg, QQmlJSTypeResolver::boolType(), QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, and QQmlJSCompilePass::setError().
|
override |
Definition at line 243 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::functionType(), QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, and Q_UNUSED.
|
override |
Definition at line 128 of file qqmljstypepropagator.cpp.
References QV4::Compiler::JSUnitGenerator::constant(), QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_jsUnitGenerator, QQmlJSCompilePass::m_typeResolver, and QQmlJSTypeResolver::typeForConst().
|
override |
Definition at line 699 of file qqmljstypepropagator.cpp.
References base, QQmlJSTypeResolver::containedType(), QQmlJSTypeResolver::globalType(), QQmlJSTypeResolver::int32Type(), QQmlJSRegisterContent::isList(), QQmlJSTypeResolver::isNumeric(), QQmlJSTypeResolver::isSignedInteger(), QQmlJSTypeResolver::isUnsignedInteger(), QQmlJSTypeResolver::jsValueType(), QQmlJSCompilePass::m_typeResolver, QQmlJSTypeResolver::merge(), QQmlJSTypeResolver::realType(), QQmlJSTypeResolver::registerContains(), QQmlJSTypeResolver::stringType(), QQmlJSTypeResolver::uint32Type(), QQmlJSTypeResolver::valueType(), and QQmlJSTypeResolver::voidType().
|
override |
Definition at line 144 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::boolType(), QQmlJSTypeResolver::globalType(), and QQmlJSCompilePass::m_typeResolver.
|
override |
Definition at line 259 of file qqmljstypepropagator.cpp.
References generate_LoadName(), QV4::Compiler::JSUnitGenerator::lookupNameIndex(), and QQmlJSCompilePass::m_jsUnitGenerator.
|
override |
Definition at line 197 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 159 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::globalType(), QQmlJSTypeResolver::int32Type(), and QQmlJSCompilePass::m_typeResolver.
|
override |
Definition at line 203 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::globalType(), QQmlJSTypeResolver::jsValueType(), QQmlJSCompilePass::m_typeResolver, and Q_UNUSED.
|
override |
Definition at line 251 of file qqmljstypepropagator.cpp.
References QQmlJSCompilePass::m_function, QQmlJSCompilePass::m_jsUnitGenerator, QQmlJSCompilePass::m_typeResolver, QQmlJSCompilePass::Function::qmlScope, QQmlJSTypeResolver::scopedType(), QQmlJSCompilePass::setError(), and QV4::Compiler::JSUnitGenerator::stringForIndex().
Referenced by generate_LoadGlobalLookup().
|
override |
Definition at line 149 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, and QQmlJSTypeResolver::nullType().
|
override |
Definition at line 901 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 896 of file qqmljstypepropagator.cpp.
References QQmlJSCompilePass::m_jsUnitGenerator, and QV4::Compiler::JSUnitGenerator::stringForIndex().
|
override |
Definition at line 542 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::containedType(), QQmlJSRegisterContent::create(), QQmlJSScope::createQQmlSAElement(), QQmlSA::SourceLocationPrivate::createQQmlSASourceLocation(), QQmlJSTypeResolver::genericType(), QQmlJSTypeResolver::globalType(), QDeferredSharedPointer< T >::isNull(), QQmlJSTypeResolver::isPrefix(), QQmlJSScope::isReferenceType(), QV4::Compiler::JSUnitGenerator::lookupNameIndex(), QQmlJSCompilePass::m_function, QQmlJSCompilePass::m_jsUnitGenerator, QQmlJSCompilePass::m_typeResolver, QQmlJSRegisterContent::ObjectById, QQmlJSCompilePass::Function::qmlScope, QQmlJSRegisterContent::ScopeAttached, QQmlJSTypeResolver::scopedType(), QQmlJSRegisterContent::ScopeModulePrefix, QQmlJSCompilePass::setError(), QV4::Compiler::JSUnitGenerator::stringForIndex(), and QQmlJSTypeResolver::voidType().
|
override |
Definition at line 170 of file qqmljstypepropagator.cpp.
References QQmlJSCompilePass::Accumulator.
|
override |
Definition at line 229 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, Q_UNUSED, and QQmlJSTypeResolver::stringType().
|
override |
Definition at line 215 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 1961 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED.
|
override |
Definition at line 971 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, property, and Q_UNUSED.
|
override |
Definition at line 139 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::boolType(), QQmlJSTypeResolver::globalType(), and QQmlJSCompilePass::m_typeResolver.
|
override |
Definition at line 154 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, and QQmlJSTypeResolver::voidType().
|
override |
Definition at line 134 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::globalType(), QQmlJSTypeResolver::int32Type(), and QQmlJSCompilePass::m_typeResolver.
|
override |
Definition at line 2404 of file qqmljstypepropagator.cpp.
References QSOperator::Mod.
|
override |
Definition at line 164 of file qqmljstypepropagator.cpp.
References QV4::Compiler::JSUnitGenerator::constant(), QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_jsUnitGenerator, QQmlJSCompilePass::m_typeResolver, and QQmlJSTypeResolver::typeForConst().
|
override |
Definition at line 187 of file qqmljstypepropagator.cpp.
References QQmlJSCompilePass::InvalidRegister, and Q_ASSERT.
|
override |
Definition at line 236 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 2394 of file qqmljstypepropagator.cpp.
References QSOperator::Mul.
|
override |
Definition at line 1824 of file qqmljstypepropagator.cpp.
|
override |
Definition at line 1818 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED.
|
override |
Definition at line 1798 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 1784 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED_IGNORE, and Q_UNUSED.
|
override |
Definition at line 1811 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 1792 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED.
|
override |
Definition at line 993 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED.
|
override |
Definition at line 73 of file qqmljstypepropagator.cpp.
References arg, QQmlJSTypeResolver::canHoldUndefined(), QQmlJSTypeResolver::containedType(), QQmlJSTypeResolver::containedTypeName(), QQmlJSScope::createQQmlSAElement(), QQmlSA::SourceLocationPrivate::createQQmlSASourceLocation(), QQmlJSRegisterContent::descriptiveName(), QQmlJSCompilePass::Function::isFullyTyped, QQmlJSCompilePass::Function::isProperty, QQmlJSCompilePass::Function::isSignalHandler, QQmlJSRegisterContent::isValid(), QQmlJSLogger::log(), QQmlJSCompilePass::m_function, QQmlJSCompilePass::m_logger, QQmlJSCompilePass::m_typeResolver, qmlIncompatibleType, QQmlJSCompilePass::Function::qmlScope, QQmlJSTypeResolver::registerContains(), QQmlJSCompilePass::setError(), and QQmlJSTypeResolver::voidType().
|
override |
Definition at line 1773 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED.
|
override |
Definition at line 966 of file qqmljstypepropagator.cpp.
References base, generate_StoreProperty(), QV4::Compiler::JSUnitGenerator::lookupNameIndex(), and QQmlJSCompilePass::m_jsUnitGenerator.
|
override |
Definition at line 1720 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED_IGNORE, and Q_UNUSED.
|
override |
Definition at line 2348 of file qqmljstypepropagator.cpp.
References QSOperator::LShift.
|
override |
Definition at line 2383 of file qqmljstypepropagator.cpp.
References QSOperator::LShift, and Q_UNUSED.
|
override |
Definition at line 2343 of file qqmljstypepropagator.cpp.
References QSOperator::RShift.
|
override |
Definition at line 2377 of file qqmljstypepropagator.cpp.
References Q_UNUSED, and QSOperator::RShift.
|
override |
Definition at line 728 of file qqmljstypepropagator.cpp.
References base, QQmlJSTypeResolver::containedType(), QQmlJSTypeResolver::globalType(), QQmlJSTypeResolver::int32Type(), QQmlJSRegisterContent::isList(), QQmlJSTypeResolver::isNumeric(), QQmlJSTypeResolver::isSignedInteger(), QQmlJSTypeResolver::isUnsignedInteger(), QQmlJSTypeResolver::jsValueType(), QQmlJSCompilePass::m_typeResolver, QQmlJSTypeResolver::realType(), QQmlJSTypeResolver::uint32Type(), and QQmlJSTypeResolver::valueType().
|
override |
Definition at line 209 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
void QQmlJSTypePropagator::generate_StoreNameCommon | ( | int | nameIndex | ) |
As far as type propagation is involved, StoreNameSloppy and StoreNameStrict are completely the same StoreNameStrict is rejecting a few writes (where the variable was not defined before) that would work in a sloppy context in JS, but the compiler would always reject this. And for type propagation, this does not matter at all. nameIndex is the index in the string table corresponding to the name which we are storing
Definition at line 607 of file qqmljstypepropagator.cpp.
References arg, QQmlJSTypeResolver::canHoldUndefined(), QQmlJSTypeResolver::containedType(), QQmlJSScope::createQQmlSAElement(), QQmlSA::SourceLocationPrivate::createQQmlSASourceLocation(), QQmlJSTypeResolver::globalType(), QQmlJSScope::hasOwnProperty(), QQmlJSLogger::log(), QQmlJSCompilePass::m_function, QQmlJSCompilePass::m_jsUnitGenerator, QQmlJSCompilePass::m_logger, QQmlJSCompilePass::m_typeResolver, qmlReadOnlyProperty, QQmlJSCompilePass::Function::qmlScope, QQmlJSTypeResolver::registerIsStoredIn(), QQmlJSTypeResolver::scopedType(), QQmlJSCompilePass::setError(), QV4::Compiler::JSUnitGenerator::stringForIndex(), QQmlJSTypeResolver::varType(), and QQmlJSTypeResolver::voidType().
Referenced by generate_StoreNameSloppy(), and generate_StoreNameStrict().
|
override |
Definition at line 667 of file qqmljstypepropagator.cpp.
References generate_StoreNameCommon().
|
override |
Definition at line 672 of file qqmljstypepropagator.cpp.
References generate_StoreNameCommon().
|
override |
Definition at line 920 of file qqmljstypepropagator.cpp.
References arg, base, QQmlJSTypeResolver::containedType(), QQmlJSScope::createQQmlSAElement(), QQmlSA::SourceLocationPrivate::createQQmlSASourceLocation(), QQmlJSLogger::log(), QQmlJSCompilePass::m_function, QQmlJSCompilePass::m_jsUnitGenerator, QQmlJSCompilePass::m_logger, QQmlJSCompilePass::m_typeResolver, QQmlJSTypeResolver::memberType(), QQmlJSRegisterContent::ObjectAttached, property, qmlReadOnlyProperty, QQmlJSCompilePass::Function::qmlScope, QQmlJSCompilePass::setError(), and QV4::Compiler::JSUnitGenerator::stringForIndex().
Referenced by generate_SetLookup().
|
override |
Definition at line 179 of file qqmljstypepropagator.cpp.
|
override |
Definition at line 222 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 977 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, property, and Q_UNUSED.
|
override |
Definition at line 2409 of file qqmljstypepropagator.cpp.
References QSOperator::Sub.
|
override |
Definition at line 1690 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 1761 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::globalType(), QQmlJSTypeResolver::jsValueType(), and QQmlJSCompilePass::m_typeResolver.
|
override |
Definition at line 2420 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED.
|
override |
Definition at line 1966 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED.
|
override |
Definition at line 1873 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, Q_UNUSED, and QQmlJSTypeResolver::stringType().
|
override |
Definition at line 1879 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, and QQmlJSTypeResolver::stringType().
|
override |
Definition at line 2281 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::Complement.
|
override |
Definition at line 2276 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::Minus.
|
override |
Definition at line 2266 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::Not.
|
override |
Definition at line 1727 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED_IGNORE.
|
override |
Definition at line 1733 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.
|
override |
Definition at line 2271 of file qqmljstypepropagator.cpp.
References QQmlJSTypeResolver::Plus.
|
override |
Definition at line 2338 of file qqmljstypepropagator.cpp.
References QSOperator::URShift.
|
override |
Definition at line 2371 of file qqmljstypepropagator.cpp.
References Q_UNUSED, and QSOperator::URShift.
|
override |
Definition at line 983 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED.
|
override |
Definition at line 988 of file qqmljstypepropagator.cpp.
References INSTR_PROLOGUE_NOT_IMPLEMENTED.
QQmlJSCompilePass::InstructionAnnotations QQmlJSTypePropagator::run | ( | const Function * | m_function, |
QQmlJS::DiagnosticMessage * | error | ||
) |
Definition at line 37 of file qqmljstypepropagator.cpp.
References QQmlJSCompilePass::Function::code, QByteArray::constData(), decode, error, function, QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::initialState(), QQmlJSCompilePass::m_error, QQmlJSCompilePass::m_function, QQmlJSCompilePass::m_typeResolver, QV4::Moth::ByteCodeHandler::reset(), QQmlJSCompilePass::Function::returnType, and QByteArray::size().
|
overridevirtual |
Implements QV4::Moth::ByteCodeHandler.
Definition at line 2432 of file qqmljstypepropagator.cpp.
References arg, QMultiHash< Key, T >::constEnd(), QMultiHash< Key, T >::constFind(), QV4::Moth::ByteCodeHandler::currentInstructionOffset(), QQmlJSCompilePass::instructionManipulatesContext(), QQmlJS::DiagnosticMessage::isValid(), QQmlJSCompilePass::m_error, QV4::Moth::ByteCodeHandler::ProcessInstruction, QQmlJSCompilePass::setError(), and QV4::Moth::ByteCodeHandler::SkipInstruction.