OpenCoverage

Qt Quick Test Coverage

Functions

Page:<>1
McCabe - Cyclomatic Complexity: 560
...10
McCabe - Cyclomatic Complexity: 8
...20
McCabe - Cyclomatic Complexity: 5
...30
McCabe - Cyclomatic Complexity: 3
...40
McCabe - Cyclomatic Complexity: 3
...43
McCabe - Cyclomatic Complexity: 2
44
McCabe - Cyclomatic Complexity: 2
45
McCabe - Cyclomatic Complexity: 2
46
McCabe - Cyclomatic Complexity: 2
4748
McCabe - Cyclomatic Complexity: 2
49
McCabe - Cyclomatic Complexity: 2
50
McCabe - Cyclomatic Complexity: 2
51
McCabe - Cyclomatic Complexity: 2
...60
McCabe - Cyclomatic Complexity: 2
...70
McCabe - Cyclomatic Complexity: 2
...100
McCabe - Cyclomatic Complexity: 1
...200
McCabe - Cyclomatic Complexity: 1
...202
McCabe - Cyclomatic Complexity: 1
FunctionCondition %eLOC - Effective Lines of CodeMcCabe - Cyclomatic Complexityâ–¾
QV4::HugeItemAllocator::allocate
Name: QV4::HugeItemAllocator::allocate
Prototype: HeapItem *HugeItemAllocator::allocate(size_t size)
Coverage: 100.000% (5/5)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/memory/qv4mm.cpp
Lines: 660-682
100.000% (5/5)
152
QV4::HeapItem::size
Name: QV4::HeapItem::size
Prototype: size_t size() const
Coverage:  0.000% (0/6)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/memory/qv4mmdefs_p.h
Lines: 244-253
  0.000% (0/6)
72
QV4::Heap::insertHoleIntoPropertyData
Name: QV4::Heap::insertHoleIntoPropertyData
Prototype: static void insertHoleIntoPropertyData(QV4::Object *object, int idx)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4internalclass.cpp
Lines: 207-214
100.000% (4/4)
52
QV4::Heap::VariantObject::destroy
Name: QV4::Heap::VariantObject::destroy
Prototype: void destroy()
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4variantobject_p.h
Lines: 71-77
100.000% (4/4)
52
QV4::Heap::TypedArray::markObjects
Name: QV4::Heap::TypedArray::markObjects
Prototype: static void markObjects(Heap::Base *b, MarkStack *stack)
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4typedarray_p.h
Lines: 83-83
  0.000% (0/4)
12
QV4::Heap::SymbolObject::markObjects
Name: QV4::Heap::SymbolObject::markObjects
Prototype: static void markObjects(Heap::Base *b, MarkStack *stack)
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4symbol_p.h
Lines: 75-75
  0.000% (0/4)
12
QV4::Heap::StringOrSymbol::toQString [qv4string_p.h #2]
Name: QV4::Heap::StringOrSymbol::toQString [qv4string_p.h #2]
Prototype: inline QString toQString() const
Coverage:  50.000% (2/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4string_p.h #2
Lines: 87-93
 50.000% (2/4)
52
QV4::Heap::StringOrSymbol::toQString [qv4string_p.h #1]
Name: QV4::Heap::StringOrSymbol::toQString [qv4string_p.h #1]
Prototype: inline QString toQString() const
Coverage:  50.000% (2/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4string_p.h #1
Lines: 87-93
 50.000% (2/4)
52
QV4::Heap::StringOrSymbol::hashValue [qv4string_p.h #2]
Name: QV4::Heap::StringOrSymbol::hashValue [qv4string_p.h #2]
Prototype: inline unsigned hashValue() const
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4string_p.h #2
Lines: 95-101
100.000% (4/4)
42
QV4::Heap::StringOrSymbol::hashValue [qv4string_p.h #1]
Name: QV4::Heap::StringOrSymbol::hashValue [qv4string_p.h #1]
Prototype: inline unsigned hashValue() const
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4string_p.h #1
Lines: 95-101
100.000% (4/4)
42
QV4::Heap::StringObject::markObjects
Name: QV4::Heap::StringObject::markObjects
Prototype: static void markObjects(Heap::Base *b, MarkStack *stack)
Coverage:  75.000% (3/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4stringobject_p.h
Lines: 67-67
 75.000% (3/4)
12
QV4::Heap::StringIteratorObject::markObjects
Name: QV4::Heap::StringIteratorObject::markObjects
Prototype: static void markObjects(Heap::Base *b, MarkStack *stack)
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4stringiterator_p.h
Lines: 69-69
  0.000% (0/4)
12
QV4::Heap::String::toQString [qv4string_p.h #1]
Name: QV4::Heap::String::toQString [qv4string_p.h #1]
Prototype: inline QString toQString() const
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4string_p.h #1
Lines: 118-124
100.000% (4/4)
52
QV4::Heap::SparseArrayData::mappedIndex
Name: QV4::Heap::SparseArrayData::mappedIndex
Prototype: uint mappedIndex(uint index) const
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4arraydata_p.h
Lines: 153-158
100.000% (4/4)
82
QV4::Heap::SparseArrayData::attributes
Name: QV4::Heap::SparseArrayData::attributes
Prototype: PropertyAttributes attributes(uint i) const
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4arraydata_p.h
Lines: 160-165
100.000% (4/4)
82
QV4::Heap::SimpleArrayData::mappedIndex
Name: QV4::Heap::SimpleArrayData::mappedIndex
Prototype: uint mappedIndex(uint index) const
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4arraydata_p.h
Lines: 135-135
100.000% (4/4)
12
QV4::Heap::SetIteratorObject::markObjects
Name: QV4::Heap::SetIteratorObject::markObjects
Prototype: static void markObjects(Heap::Base *b, MarkStack *stack)
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4setiterator_p.h
Lines: 69-69
  0.000% (0/4)
12
QV4::Heap::ScriptFunction::markObjects
Name: QV4::Heap::ScriptFunction::markObjects
Prototype: static void markObjects(Heap::Base *b, MarkStack *stack)
Coverage:  50.000% (2/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4functionobject_p.h
Lines: 115-115
 50.000% (2/4)
12
QV4::Heap::RegExpObject::markObjects
Name: QV4::Heap::RegExpObject::markObjects
Prototype: static void markObjects(Heap::Base *b, MarkStack *stack)
Coverage:  75.000% (3/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4regexpobject_p.h
Lines: 79-79
 75.000% (3/4)
12
QV4::Heap::RegExpCtor::markObjects
Name: QV4::Heap::RegExpCtor::markObjects
Prototype: static void markObjects(Heap::Base *b, MarkStack *stack)
Coverage:  75.000% (3/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4regexpobject_p.h
Lines: 93-93
 75.000% (3/4)
12
QV4::Heap::QmlIncubatorObject::markObjects
Name: QV4::Heap::QmlIncubatorObject::markObjects
Prototype: static void markObjects(Heap::Base *b, MarkStack *stack)
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/qml/qqmlcomponent.cpp
Lines: 1094-1094
  0.000% (0/4)
12
QV4::Heap::QQmlBindingFunction::markObjects
Name: QV4::Heap::QQmlBindingFunction::markObjects
Prototype: static void markObjects(Heap::Base *b, MarkStack *stack)
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/qml/v8/qqmlbuiltinfunctions_p.h
Lines: 86-86
  0.000% (0/4)
12
QV4::Heap::QObjectMethod::markObjects
Name: QV4::Heap::QObjectMethod::markObjects
Prototype: static void markObjects(Heap::Base *b, MarkStack *stack)
Coverage:  50.000% (2/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper_p.h
Lines: 106-106
 50.000% (2/4)
12
QV4::Heap::Proxy::markObjects
Name: QV4::Heap::Proxy::markObjects
Prototype: static void markObjects(Heap::Base *b, MarkStack *stack)
Coverage:  50.000% (2/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4proxy_p.h
Lines: 76-76
 50.000% (2/4)
12
QV4::Heap::Object::writablePropertyData
Name: QV4::Heap::Object::writablePropertyData
Prototype: PropertyIndex writablePropertyData(uint index)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4object_p.h
Lines: 100-106
100.000% (4/4)
52
QV4::Heap::Object::setProperty
Name: QV4::Heap::Object::setProperty
Prototype: void setProperty(ExecutionEngine *e, uint index, Value v)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4object_p.h
Lines: 115-123
100.000% (4/4)
62
QV4::Heap::Object::setProperty
Name: QV4::Heap::Object::setProperty
Prototype: void setProperty(ExecutionEngine *e, uint index, Heap::Base *b)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4object_p.h
Lines: 124-132
100.000% (4/4)
62
QV4::Heap::Object::propertyData
Name: QV4::Heap::Object::propertyData
Prototype: const Value *propertyData(uint index) const
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4object_p.h
Lines: 108-114
100.000% (4/4)
52
QV4::Heap::MapIteratorObject::markObjects
Name: QV4::Heap::MapIteratorObject::markObjects
Prototype: static void markObjects(Heap::Base *b, MarkStack *stack)
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4mapiterator_p.h
Lines: 69-69
  0.000% (0/4)
12
QV4::Heap::InternalClass::removeMember
Name: QV4::Heap::InternalClass::removeMember
Prototype: void InternalClass::removeMember(QV4::Object *object, PropertyKey identifier)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4internalclass.cpp
Lines: 454-476
100.000% (4/4)
132
QV4::Heap::InternalClass::lookupOrInsertTransition
Name: QV4::Heap::InternalClass::lookupOrInsertTransition
Prototype: InternalClassTransition &InternalClass::lookupOrInsertTransition(const InternalClassTransition &t)
Coverage: 100.000% (6/6)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4internalclass.cpp
Lines: 249-258
100.000% (6/6)
52
QV4::Heap::InternalClass::find
Name: QV4::Heap::InternalClass::find
Prototype: uint find(const PropertyKey id)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4internalclass_p.h
Lines: 295-304
100.000% (4/4)
92
QV4::Heap::InternalClass::changeVTableImpl
Name: QV4::Heap::InternalClass::changeVTableImpl
Prototype: Heap::InternalClass *InternalClass::changeVTableImpl(const VTable *vt)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4internalclass.cpp
Lines: 347-366
100.000% (4/4)
122
QV4::Heap::InternalClass::changeVTable
Name: QV4::Heap::InternalClass::changeVTable
Prototype: InternalClass *changeVTable(const VTable *vt)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4internalclass_p.h
Lines: 312-316
100.000% (4/4)
32
QV4::Heap::InternalClass::changePrototype
Name: QV4::Heap::InternalClass::changePrototype
Prototype: InternalClass *changePrototype(Heap::Object *proto)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4internalclass_p.h
Lines: 317-321
100.000% (4/4)
32
QV4::Heap::InternalClass::addMember
Name: QV4::Heap::InternalClass::addMember
Prototype: Heap::InternalClass *InternalClass::addMember(PropertyKey identifier, PropertyAttributes data, uint *index)
Coverage:  50.000% (2/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4internalclass.cpp
Lines: 403-412
 50.000% (2/4)
52
QV4::Heap::FunctionObject::markObjects
Name: QV4::Heap::FunctionObject::markObjects
Prototype: static void markObjects(Heap::Base *b, MarkStack *stack)
Coverage:  75.000% (3/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4functionobject_p.h
Lines: 77-77
 75.000% (3/4)
12
QV4::Heap::ErrorObject::markObjects
Name: QV4::Heap::ErrorObject::markObjects
Prototype: static void markObjects(Heap::Base *b, MarkStack *stack)
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4errorobject_p.h
Lines: 70-70
  0.000% (0/4)
12
QV4::Heap::DataView::markObjects
Name: QV4::Heap::DataView::markObjects
Prototype: static void markObjects(Heap::Base *b, MarkStack *stack)
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4dataview_p.h
Lines: 72-72
  0.000% (0/4)
12
QV4::Heap::CallContext::markObjects
Name: QV4::Heap::CallContext::markObjects
Prototype: static void markObjects(Heap::Base *b, MarkStack *stack)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4context_p.h
Lines: 107-107
100.000% (4/4)
12
QV4::Heap::Base::mark
Name: QV4::Heap::Base::mark
Prototype: inline void Base::mark(QV4::MarkStack *markStack)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/memory/qv4heap_p.h
Lines: 180-194
100.000% (4/4)
102
QV4::Heap::ArrayIteratorObject::markObjects
Name: QV4::Heap::ArrayIteratorObject::markObjects
Prototype: static void markObjects(Heap::Base *b, MarkStack *stack)
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4arrayiterator_p.h
Lines: 72-72
  0.000% (0/4)
12
QV4::Heap::ArrayData::setProperty
Name: QV4::Heap::ArrayData::setProperty
Prototype: void ArrayData::setProperty(QV4::EngineBase *e, uint index, const Property *p)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4arraydata_p.h
Lines: 299-306
100.000% (4/4)
92
QV4::Heap::ArrayData::attributes
Name: QV4::Heap::ArrayData::attributes
Prototype: inline PropertyAttributes ArrayData::attributes(uint i) const
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4arraydata_p.h
Lines: 308-313
100.000% (4/4)
32
QV4::FunctionObject::callAsConstructor
Name: QV4::FunctionObject::callAsConstructor
Prototype: inline ReturnedValue FunctionObject::callAsConstructor(const JSCallData &data) const
Coverage:  40.000% (2/5)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4jscall_p.h
Lines: 102-108
 40.000% (2/5)
32
QV4::Function::nestedFunction
Name: QV4::Function::nestedFunction
Prototype: Function *nestedFunction() const
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4function_p.h
Lines: 103-108
  0.000% (0/4)
32
QV4::ExecutionEngine::checkStackLimits [qv4engine_p.h #2]
Name: QV4::ExecutionEngine::checkStackLimits [qv4engine_p.h #2]
Prototype: inline bool ExecutionEngine::checkStackLimits()
Coverage: 100.000% (5/5)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4engine_p.h #2
Lines: 594-602
100.000% (5/5)
42
QV4::ExecutionEngine::checkStackLimits [qv4engine_p.h #1]
Name: QV4::ExecutionEngine::checkStackLimits [qv4engine_p.h #1]
Prototype: inline bool ExecutionEngine::checkStackLimits()
Coverage: 100.000% (5/5)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4engine_p.h #1
Lines: 594-602
100.000% (5/5)
42
QV4::Encode::smallestNumber
Name: QV4::Encode::smallestNumber
Prototype: static ReturnedValue smallestNumber(double d)
Coverage:  87.500% (7/8)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4value_p.h
Lines: 735-740
 87.500% (7/8)
32
QV4::Double::toInt32
Name: QV4::Double::toInt32
Prototype: static int toInt32(double d)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4value_p.h
Lines: 659-664
100.000% (4/4)
42
QV4::Double::significant
Name: QV4::Double::significant
Prototype: quint64 significant() const
Coverage:  75.000% (3/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4value_p.h
Lines: 652-657
 75.000% (3/4)
42
QV4::DelegateModelGroupFunction::virtualCall
Name: QV4::DelegateModelGroupFunction::virtualCall
Prototype: static ReturnedValue virtualCall(const QV4::FunctionObject *that, const Value *thisObject, const Value *argv, int argc)
Coverage:  40.000% (2/5)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/types/qqmldelegatemodel.cpp
Lines: 99-109
 40.000% (2/5)
72
QV4::CppStackFrame::callContext [qv4stackframe_p.h #2]
Name: QV4::CppStackFrame::callContext [qv4stackframe_p.h #2]
Prototype: inline QV4::Heap::CallContext *callContext() const
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4stackframe_p.h #2
Lines: 175-180
  0.000% (0/4)
42
QV4::CppStackFrame::callContext [qv4stackframe_p.h #1]
Name: QV4::CppStackFrame::callContext [qv4stackframe_p.h #1]
Prototype: inline QV4::Heap::CallContext *callContext() const
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/jsruntime/qv4stackframe_p.h #1
Lines: 175-180
  0.000% (0/4)
42
QV4::Compiler::StringTableGenerator::serialize
Name: QV4::Compiler::StringTableGenerator::serialize
Prototype: void QV4::Compiler::StringTableGenerator::serialize(CompiledData::Unit *unit)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compiler.cpp
Lines: 83-109
100.000% (4/4)
152
QV4::Compiler::StringTableGenerator::registerString
Name: QV4::Compiler::StringTableGenerator::registerString
Prototype: int QV4::Compiler::StringTableGenerator::registerString(const QString &str)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compiler.cpp
Lines: 59-68
100.000% (4/4)
72
QV4::Compiler::JSUnitGenerator::registerJSClass
Name: QV4::Compiler::JSUnitGenerator::registerJSClass
Prototype: int QV4::Compiler::JSUnitGenerator::registerJSClass(const QStringList &members)
Coverage: 100.000% (2/2)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compiler.cpp
Lines: 191-212
100.000% (2/2)
132
QV4::Compiler::JSUnitGenerator::registerConstant
Name: QV4::Compiler::JSUnitGenerator::registerConstant
Prototype: int QV4::Compiler::JSUnitGenerator::registerConstant(QV4::ReturnedValue v)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compiler.cpp
Lines: 177-184
100.000% (4/4)
52
QV4::Compiler::ControlFlowLoop::~ControlFlowLoop
Name: QV4::Compiler::ControlFlowLoop::~ControlFlowLoop
Prototype: ~ControlFlowLoop()
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compilercontrolflow_p.h
Lines: 207-213
100.000% (4/4)
42
QV4::Compiler::ControlFlowLoop::ControlFlowLoop
Name: QV4::Compiler::ControlFlowLoop::ControlFlowLoop
Prototype: ControlFlowLoop(Codegen *cg, BytecodeGenerator::Label *breakLabel, BytecodeGenerator::Label *continueLabel = nullptr, bool requiresUnwind = false)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compilercontrolflow_p.h
Lines: 198-205
100.000% (4/4)
32
QV4::Compiler::ControlFlowCatch::~ControlFlowCatch
Name: QV4::Compiler::ControlFlowCatch::~ControlFlowCatch
Prototype: ~ControlFlowCatch()
Coverage: 100.000% (5/5)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compilercontrolflow_p.h
Lines: 327-361
100.000% (5/5)
182
QV4::Compiler::ControlFlowBlock::ControlFlowBlock
Name: QV4::Compiler::ControlFlowBlock::ControlFlowBlock
Prototype: ControlFlowBlock(Codegen *cg, AST::Node *ast)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compilercontrolflow_p.h
Lines: 272-282
100.000% (4/4)
52
QV4::Compiler::ControlFlow::loopLabel
Name: QV4::Compiler::ControlFlow::loopLabel
Prototype: QString loopLabel() const
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compilercontrolflow_p.h
Lines: 151-158
100.000% (4/4)
52
QV4::Compiler::Context::memberInfo
Name: QV4::Compiler::Context::memberInfo
Prototype: bool memberInfo(const QString &name, const Member **m) const
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compilercontext_p.h
Lines: 263-273
  0.000% (0/4)
72
QV4::Compiler::Context::findMember
Name: QV4::Compiler::Context::findMember
Prototype: Member findMember(const QString &name) const
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compilercontext_p.h
Lines: 254-261
100.000% (4/4)
52
QV4::Compiler::Context::Context
Name: QV4::Compiler::Context::Context
Prototype: Context(Context *parent, ContextType type)
Coverage: 100.000% (6/6)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compilercontext_p.h
Lines: 236-242
100.000% (6/6)
22
QV4::Compiler::Codegen::returnLabel
Name: QV4::Compiler::Codegen::returnLabel
Prototype: BytecodeGenerator::Label returnLabel()
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4codegen_p.h
Lines: 686-690
100.000% (4/4)
32
QV4::Compiler::Codegen::VolatileMemoryLocations::isVolatile
Name: QV4::Compiler::Codegen::VolatileMemoryLocations::isVolatile
Prototype: bool isVolatile(const QStringView &name)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4codegen_p.h
Lines: 114-118
100.000% (4/4)
32
QV4::Compiler::Codegen::VolatileMemoryLocations::add
Name: QV4::Compiler::Codegen::VolatileMemoryLocations::add
Prototype: void add(const QStringRef &name)
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4codegen_p.h
Lines: 120-120
  0.000% (0/4)
12
QV4::Compiler::Codegen::Result::accept
Name: QV4::Compiler::Codegen::Result::accept
Prototype: bool accept(Format f)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4codegen_p.h
Lines: 464-471
100.000% (4/4)
42
QV4::Compiler::Codegen::Reference::stackSlot
Name: QV4::Compiler::Codegen::Reference::stackSlot
Prototype: Moth::StackSlot stackSlot() const
Coverage:  50.000% (2/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4codegen_p.h
Lines: 352-356
 50.000% (2/4)
32
QV4::Compiler::Codegen::Reference::fromStackSlot
Name: QV4::Compiler::Codegen::Reference::fromStackSlot
Prototype: static Reference fromStackSlot(Codegen *cg, int tempIndex = -1, bool isLocal = false)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4codegen_p.h
Lines: 255-262
100.000% (4/4)
62
QV4::CompiledData::final::url [qv4compileddata_p.h #1]
Name: QV4::CompiledData::final::url [qv4compileddata_p.h #1]
Prototype: QUrl url() const
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata_p.h #1
Lines: 1028-1028
100.000% (4/4)
12
QV4::CompiledData::final::release [qv4compileddata_p.h #2]
Name: QV4::CompiledData::final::release [qv4compileddata_p.h #2]
Prototype: void release()
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata_p.h #2
Lines: 1000-1005
100.000% (4/4)
32
QV4::CompiledData::final::release [qv4compileddata_p.h #1]
Name: QV4::CompiledData::final::release [qv4compileddata_p.h #1]
Prototype: void release()
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata_p.h #1
Lines: 1000-1005
100.000% (4/4)
32
QV4::CompiledData::final::finalUrl [qv4compileddata_p.h #1]
Name: QV4::CompiledData::final::finalUrl [qv4compileddata_p.h #1]
Prototype: QUrl finalUrl() const
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata_p.h #1
Lines: 1029-1034
100.000% (4/4)
32
QV4::CompiledData::TypeReferenceMap::collectFromObjects [qv4compileddata_p.h #2]
Name: QV4::CompiledData::TypeReferenceMap::collectFromObjects [qv4compileddata_p.h #2]
Prototype: template <typename Iterator> void collectFromObjects(Iterator it, Iterator end)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata_p.h #2
Lines: 941-946
100.000% (4/4)
22
QV4::CompiledData::TypeReferenceMap::collectFromObjects [qv4compileddata_p.h #1]
Name: QV4::CompiledData::TypeReferenceMap::collectFromObjects [qv4compileddata_p.h #1]
Prototype: template <typename Iterator> void collectFromObjects(Iterator it, Iterator end)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata_p.h #1
Lines: 941-946
100.000% (4/4)
22
QV4::CompiledData::TypeReferenceMap::add [qv4compileddata_p.h #2]
Name: QV4::CompiledData::TypeReferenceMap::add [qv4compileddata_p.h #2]
Prototype: TypeReference &add(int nameIndex, const Location &loc)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata_p.h #2
Lines: 908-913
100.000% (4/4)
42
QV4::CompiledData::TypeReferenceMap::add [qv4compileddata_p.h #1]
Name: QV4::CompiledData::TypeReferenceMap::add [qv4compileddata_p.h #1]
Prototype: TypeReference &add(int nameIndex, const Location &loc)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata_p.h #1
Lines: 908-913
100.000% (4/4)
42
QV4::CompiledData::CompilationUnit::~CompilationUnit [qv4compileddata.cpp #2]
Name: QV4::CompiledData::CompilationUnit::~CompilationUnit [qv4compileddata.cpp #2]
Prototype: CompilationUnit::~CompilationUnit()
Coverage: 100.000% (6/6)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata.cpp #2
Lines: 87-93
100.000% (6/6)
42
QV4::CompiledData::CompilationUnit::namedObjectsPerComponent [qv4compileddata_p.h #1]
Name: QV4::CompiledData::CompilationUnit::namedObjectsPerComponent [qv4compileddata_p.h #1]
Prototype: IdentifierHash CompilationUnit::namedObjectsPerComponent(int componentObjectIndex)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata_p.h #1
Lines: 1151-1157
100.000% (4/4)
42
QV4::CompiledData::CompilationUnit::loadFromDisk::[lambda]::CompilationUnit::saveToDisk::[lambda]::ResolvedTypeReference::propertyCache [qv4compileddata.cpp #2]
Name: QV4::CompiledData::CompilationUnit::loadFromDisk::[lambda]::CompilationUnit::saveToDisk::[lambda]::ResolvedTypeReference::propertyCache [qv4compileddata.cpp #2]
Prototype: QQmlRefPointer<QQmlPropertyCache> ResolvedTypeReference::propertyCache() const
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata.cpp #2
Lines: 658-664
  0.000% (0/4)
32
QV4::CompiledData::CompilationUnit::loadFromDisk::[lambda]::CompilationUnit::saveToDisk::[lambda]::ResolvedTypeReference::addToHash [qv4compileddata.cpp #2]
Name: QV4::CompiledData::CompilationUnit::loadFromDisk::[lambda]::CompilationUnit::saveToDisk::[lambda]::ResolvedTypeReference::addToHash [qv4compileddata.cpp #2]
Prototype: bool ResolvedTypeReference::addToHash(QCryptographicHash *hash, QQmlEngine *engine)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata.cpp #2
Lines: 681-690
100.000% (4/4)
62
QV4::CompiledData::CompilationUnit::loadFromDisk::[lambda]::CompilationUnit::saveToDisk::[lambda]::CompilationUnit::destroy [qv4compileddata.cpp #2]
Name: QV4::CompiledData::CompilationUnit::loadFromDisk::[lambda]::CompilationUnit::saveToDisk::[lambda]::CompilationUnit::destroy [qv4compileddata.cpp #2]
Prototype: void CompilationUnit::destroy()
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata.cpp #2
Lines: 726-734
100.000% (4/4)
32
QV4::CompiledData::CompilationUnit::loadFromDisk::[lambda]::CompilationUnit::saveToDisk::[lambda]::CompilationUnit::createUnitData::[lambda] [qv4compileddata.cpp #2]
Name: QV4::CompiledData::CompilationUnit::loadFromDisk::[lambda]::CompilationUnit::saveToDisk::[lambda]::CompilationUnit::createUnitData::[lambda] [qv4compileddata.cpp #2]
Prototype: [&jsUnit, &compilationUnit]()
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata.cpp #2
Lines: 465-471
100.000% (4/4)
42
QV4::CompiledData::CompilationUnit::loadFromDisk::[lambda]::CompilationUnit::saveToDisk::[lambda]::Binding::valueAsScriptString [qv4compileddata.cpp #2]
Name: QV4::CompiledData::CompilationUnit::loadFromDisk::[lambda]::CompilationUnit::saveToDisk::[lambda]::Binding::valueAsScriptString [qv4compileddata.cpp #2]
Prototype: QString Binding::valueAsScriptString(const Unit *unit) const
Coverage:  50.000% (2/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata.cpp #2
Lines: 646-652
 50.000% (2/4)
32
QV4::CompiledData::CompilationUnit::createUnitData::[lambda] [qv4compileddata.cpp #1]
Name: QV4::CompiledData::CompilationUnit::createUnitData::[lambda] [qv4compileddata.cpp #1]
Prototype: [&jsUnit, &compilationUnit]()
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata.cpp #1
Lines: 465-471
100.000% (4/4)
42
QV4::CompiledData::CompilationUnit::createNamedObjectsPerComponent [qv4compileddata.cpp #2]
Name: QV4::CompiledData::CompilationUnit::createNamedObjectsPerComponent [qv4compileddata.cpp #2]
Prototype: IdentifierHash CompilationUnit::createNamedObjectsPerComponent(int componentObjectIndex)
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata.cpp #2
Lines: 267-277
100.000% (4/4)
72
QV4::CompiledData::Binding::valueAsScriptString [qv4compileddata.cpp #1]
Name: QV4::CompiledData::Binding::valueAsScriptString [qv4compileddata.cpp #1]
Prototype: QString Binding::valueAsScriptString(const Unit *unit) const
Coverage:  50.000% (2/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata.cpp #1
Lines: 646-652
 50.000% (2/4)
32
QV4::CompiledData::Binding::valueAsNumber [qv4compileddata_p.h #2]
Name: QV4::CompiledData::Binding::valueAsNumber [qv4compileddata_p.h #2]
Prototype: double valueAsNumber() const
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata_p.h #2
Lines: 469-477
100.000% (4/4)
62
QV4::CompiledData::Binding::valueAsNumber [qv4compileddata_p.h #1]
Name: QV4::CompiledData::Binding::valueAsNumber [qv4compileddata_p.h #1]
Prototype: double valueAsNumber() const
Coverage: 100.000% (4/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata_p.h #1
Lines: 469-477
100.000% (4/4)
62
QV4::CompiledData::Binding::valueAsBoolean [qv4compileddata_p.h #2]
Name: QV4::CompiledData::Binding::valueAsBoolean [qv4compileddata_p.h #2]
Prototype: bool valueAsBoolean() const
Coverage:  50.000% (2/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata_p.h #2
Lines: 485-490
 50.000% (2/4)
32
QV4::CompiledData::Binding::valueAsBoolean [qv4compileddata_p.h #1]
Name: QV4::CompiledData::Binding::valueAsBoolean [qv4compileddata_p.h #1]
Prototype: bool valueAsBoolean() const
Coverage:  50.000% (2/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata_p.h #1
Lines: 485-490
 50.000% (2/4)
32
QV4::CompiledData::Binding::isSignalHandler [qv4compileddata_p.h #2]
Name: QV4::CompiledData::Binding::isSignalHandler [qv4compileddata_p.h #2]
Prototype: bool isSignalHandler() const
Coverage:  0.000% (0/6)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata_p.h #2
Lines: 427-436
  0.000% (0/6)
62
QV4::CompiledData::Binding::isSignalHandler [qv4compileddata_p.h #1]
Name: QV4::CompiledData::Binding::isSignalHandler [qv4compileddata_p.h #1]
Prototype: bool isSignalHandler() const
Coverage:  0.000% (0/6)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata_p.h #1
Lines: 427-436
  0.000% (0/6)
62
QV4::CompiledData::Binding::isGroupProperty [qv4compileddata_p.h #2]
Name: QV4::CompiledData::Binding::isGroupProperty [qv4compileddata_p.h #2]
Prototype: bool isGroupProperty() const
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata_p.h #2
Lines: 449-458
  0.000% (0/4)
62
QV4::CompiledData::Binding::isGroupProperty [qv4compileddata_p.h #1]
Name: QV4::CompiledData::Binding::isGroupProperty [qv4compileddata_p.h #1]
Prototype: bool isGroupProperty() const
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata_p.h #1
Lines: 449-458
  0.000% (0/4)
62
QV4::CompiledData::Binding::isAttachedProperty [qv4compileddata_p.h #2]
Name: QV4::CompiledData::Binding::isAttachedProperty [qv4compileddata_p.h #2]
Prototype: bool isAttachedProperty() const
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata_p.h #2
Lines: 438-447
  0.000% (0/4)
62
QV4::CompiledData::Binding::isAttachedProperty [qv4compileddata_p.h #1]
Name: QV4::CompiledData::Binding::isAttachedProperty [qv4compileddata_p.h #1]
Prototype: bool isAttachedProperty() const
Coverage:  0.000% (0/4)
Absolute File Name: /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/compiler/qv4compileddata_p.h #1
Lines: 438-447
  0.000% (0/4)
62
Page:<>1
McCabe - Cyclomatic Complexity: 560
...10
McCabe - Cyclomatic Complexity: 8
...20
McCabe - Cyclomatic Complexity: 5
...30
McCabe - Cyclomatic Complexity: 3
...40
McCabe - Cyclomatic Complexity: 3
...43
McCabe - Cyclomatic Complexity: 2
44
McCabe - Cyclomatic Complexity: 2
45
McCabe - Cyclomatic Complexity: 2
46
McCabe - Cyclomatic Complexity: 2
4748
McCabe - Cyclomatic Complexity: 2
49
McCabe - Cyclomatic Complexity: 2
50
McCabe - Cyclomatic Complexity: 2
51
McCabe - Cyclomatic Complexity: 2
...60
McCabe - Cyclomatic Complexity: 2
...70
McCabe - Cyclomatic Complexity: 2
...100
McCabe - Cyclomatic Complexity: 1
...200
McCabe - Cyclomatic Complexity: 1
...202
McCabe - Cyclomatic Complexity: 1

Generated by Squish Coco 4.2.0